diff --git a/CMakeLists.txt b/CMakeLists.txt index 4a68a29..e3e2630 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,31 +8,118 @@ project(panic LANGUAGES CXX) # Uses C++11 set(CMAKE_CXX_STANDARD 11) -# This makes it so it uses C++11, and fails if now found. +# This makes it so it uses C++11, and fails if not found. set(CMAKE_CXX_STANDARD_REQUIRED ON) # Makes sure it uses basic options -# -std=c++11 instead of -std-gnu++11 +# -std=c++11 instead of -std=gnu++11 set(CMAKE_CXX_EXTENSIONS OFF) +#--------------------------------------------------------------------------------------------------------------------------- +# OPENMP CONFIGURATION +#--------------------------------------------------------------------------------------------------------------------------- + +# OpenMP is disabled by default. +# Enable with: +# cmake -S . -B build -DPANIC_ENABLE_OPENMP=ON +option(PANIC_ENABLE_OPENMP "Enable OpenMP support" OFF) + +# Number of OpenMP threads. +# 0 means OpenMP decides the default. +# Example that overrides default is: "-DPANIC_OMP_NUM_THREADS=": +# cmake -S . -B build -DPANIC_ENABLE_OPENMP=ON -DPANIC_OMP_NUM_THREADS=4 +set(PANIC_OMP_NUM_THREADS "0" CACHE STRING "Number of OpenMP threads. 0 means OpenMP default.") + +#--------------------------------------------------------------------------------------------------------------------------- +# SOURCE FILES +#--------------------------------------------------------------------------------------------------------------------------- # This finds all the .cpp files in the src/ folder -# and it's subfolders. -# This is saved in the variale PANIC_SOURCES +# and its subfolders. +# This is saved in the variable PANIC_SOURCES file(GLOB_RECURSE PANIC_SOURCES CONFIGURE_DEPENDS src/*.cpp ) +#--------------------------------------------------------------------------------------------------------------------------- +# EXECUTABLE +#--------------------------------------------------------------------------------------------------------------------------- # Creates an executable called "panic" -# It's build from main.cpp and all scr/ +# It's built from main.cpp and all src/ add_executable(panic main.cpp ${PANIC_SOURCES} ) -# This finds all the .hpp files in the include/ folder -# and it's subfolders. +#--------------------------------------------------------------------------------------------------------------------------- +# INCLUDE DIRECTORIES +#--------------------------------------------------------------------------------------------------------------------------- + +# Tells the compiler where to look for header files. +# This makes includes like work. target_include_directories(panic PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include -) \ No newline at end of file +) + +#--------------------------------------------------------------------------------------------------------------------------- +# OPENMP BUILD SETTINGS +#--------------------------------------------------------------------------------------------------------------------------- + +# If the user enabled OpenMP with: +# -DPANIC_ENABLE_OPENMP=ON +if(PANIC_ENABLE_OPENMP) + + # Ask CMake to search for OpenMP support for the compiler. + # If found, CMake creates the target: + # OpenMP::OpenMP_CXX + # This target contains the needed compiler and linker flags. + find_package(OpenMP) + + # Check if CMake found OpenMP for C++. + if(OpenMP_CXX_FOUND) + + # Link the panic executable with OpenMP. + # This adds the correct compiler/linker options, for example -fopenmp. + target_link_libraries(panic PRIVATE OpenMP::OpenMP_CXX) + + # Define preprocessor macros that the C++ code can read. + # + # This makes the compiler behave as if every .cpp file had: + # #define PANIC_USE_OPENMP 1 + # #define PANIC_OMP_NUM_THREADS + # + # Example: + # -DPANIC_OMP_NUM_THREADS=4 + # + # becomes: + # #define PANIC_OMP_NUM_THREADS 4 + target_compile_definitions(panic PRIVATE + PANIC_USE_OPENMP=1 + PANIC_OMP_NUM_THREADS=${PANIC_OMP_NUM_THREADS} + ) + + else() + + # The user asked for OpenMP, but CMake could not find it. + # So we warn the user and build PANIC without OpenMP instead. + message(WARNING "OpenMP requested, but OpenMP was not found. Building without OpenMP.") + + # Tell the C++ code that OpenMP is disabled. + target_compile_definitions(panic PRIVATE + PANIC_USE_OPENMP=0 + PANIC_OMP_NUM_THREADS=0 + ) + + endif() + +else() + + # The user did not enable OpenMP. + # So PANIC builds as normal serial/portable code. + target_compile_definitions(panic PRIVATE + PANIC_USE_OPENMP=0 + PANIC_OMP_NUM_THREADS=0 + ) + +endif() \ No newline at end of file diff --git a/build/CMakeCache.txt b/build/CMakeCache.txt index ec9d5bf..6139388 100644 --- a/build/CMakeCache.txt +++ b/build/CMakeCache.txt @@ -189,6 +189,24 @@ CMAKE_TAPI:FILEPATH=CMAKE_TAPI-NOTFOUND // Studio IDE projects all commands are done without /nologo. CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE +//CXX compiler flags for OpenMP parallelization +OpenMP_CXX_FLAGS:STRING=-fopenmp + +//CXX compiler libraries for OpenMP parallelization +OpenMP_CXX_LIB_NAMES:STRING=gomp;pthread + +//Path to the gomp library for OpenMP +OpenMP_gomp_LIBRARY:FILEPATH=/usr/lib/gcc/x86_64-linux-gnu/13/libgomp.so + +//Path to the pthread library for OpenMP +OpenMP_pthread_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libpthread.a + +//Enable OpenMP support +PANIC_ENABLE_OPENMP:BOOL=ON + +//Number of OpenMP threads. 0 means OpenMP default. +PANIC_OMP_NUM_THREADS:STRING=4 + //Value Computed by CMake panic_BINARY_DIR:STATIC=/home/atlas/Documents/Git/panic/build @@ -332,6 +350,24 @@ CMAKE_TAPI-ADVANCED:INTERNAL=1 CMAKE_UNAME:INTERNAL=/usr/bin/uname //ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 +//Details about finding OpenMP +FIND_PACKAGE_MESSAGE_DETAILS_OpenMP:INTERNAL=[TRUE][c ][v4.5()] +//Details about finding OpenMP_CXX +FIND_PACKAGE_MESSAGE_DETAILS_OpenMP_CXX:INTERNAL=[-fopenmp][/usr/lib/gcc/x86_64-linux-gnu/13/libgomp.so][/usr/lib/x86_64-linux-gnu/libpthread.a][v4.5()] +//Result of TRY_COMPILE +OpenMP_COMPILE_RESULT_CXX_fopenmp:INTERNAL=TRUE +//ADVANCED property for variable: OpenMP_CXX_FLAGS +OpenMP_CXX_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: OpenMP_CXX_LIB_NAMES +OpenMP_CXX_LIB_NAMES-ADVANCED:INTERNAL=1 +//CXX compiler's OpenMP specification date +OpenMP_CXX_SPEC_DATE:INTERNAL=201511 +//Result of TRY_COMPILE +OpenMP_SPECTEST_CXX_:INTERNAL=TRUE +//ADVANCED property for variable: OpenMP_gomp_LIBRARY +OpenMP_gomp_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: OpenMP_pthread_LIBRARY +OpenMP_pthread_LIBRARY-ADVANCED:INTERNAL=1 //linker supports push/pop state _CMAKE_LINKER_PUSHPOP_STATE_SUPPORTED:INTERNAL=TRUE diff --git a/build/CMakeFiles/CMakeConfigureLog.yaml b/build/CMakeFiles/CMakeConfigureLog.yaml index de1062a..9a48230 100644 --- a/build/CMakeFiles/CMakeConfigureLog.yaml +++ b/build/CMakeFiles/CMakeConfigureLog.yaml @@ -39,8 +39,8 @@ events: checks: - "Detecting CXX compiler ABI info" directories: - source: "/home/atlas/Documents/Git/panic/build/CMakeFiles/CMakeScratch/TryCompile-KCsEdB" - binary: "/home/atlas/Documents/Git/panic/build/CMakeFiles/CMakeScratch/TryCompile-KCsEdB" + source: "/home/atlas/Documents/Git/panic/build/CMakeFiles/CMakeScratch/TryCompile-Ouh05T" + binary: "/home/atlas/Documents/Git/panic/build/CMakeFiles/CMakeScratch/TryCompile-Ouh05T" cmakeVariables: CMAKE_CXX_FLAGS: "" CMAKE_CXX_FLAGS_DEBUG: "-g" @@ -49,13 +49,13 @@ events: variable: "CMAKE_CXX_ABI_COMPILED" cached: true stdout: | - Change Dir: '/home/atlas/Documents/Git/panic/build/CMakeFiles/CMakeScratch/TryCompile-KCsEdB' + Change Dir: '/home/atlas/Documents/Git/panic/build/CMakeFiles/CMakeScratch/TryCompile-Ouh05T' - Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_c98c7/fast - /usr/bin/gmake -f CMakeFiles/cmTC_c98c7.dir/build.make CMakeFiles/cmTC_c98c7.dir/build - gmake[1]: Entering directory '/home/atlas/Documents/Git/panic/build/CMakeFiles/CMakeScratch/TryCompile-KCsEdB' - Building CXX object CMakeFiles/cmTC_c98c7.dir/CMakeCXXCompilerABI.cpp.o - /usr/bin/c++ -v -o CMakeFiles/cmTC_c98c7.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-3.28/Modules/CMakeCXXCompilerABI.cpp + Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_3d47d/fast + /usr/bin/gmake -f CMakeFiles/cmTC_3d47d.dir/build.make CMakeFiles/cmTC_3d47d.dir/build + gmake[1]: Entering directory '/home/atlas/Documents/Git/panic/build/CMakeFiles/CMakeScratch/TryCompile-Ouh05T' + Building CXX object CMakeFiles/cmTC_3d47d.dir/CMakeCXXCompilerABI.cpp.o + /usr/bin/c++ -v -o CMakeFiles/cmTC_3d47d.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-3.28/Modules/CMakeCXXCompilerABI.cpp Using built-in specs. COLLECT_GCC=/usr/bin/c++ OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa @@ -65,8 +65,8 @@ events: Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 13.3.0 (Ubuntu 13.3.0-6ubuntu2~24.04.1) - COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_c98c7.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_c98c7.dir/' - /usr/libexec/gcc/x86_64-linux-gnu/13/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/share/cmake-3.28/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_c98c7.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccGqwDi1.s + COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_3d47d.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_3d47d.dir/' + /usr/libexec/gcc/x86_64-linux-gnu/13/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/share/cmake-3.28/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_3d47d.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/cc5YDuu5.s GNU C++17 (Ubuntu 13.3.0-6ubuntu2~24.04.1) version 13.3.0 (x86_64-linux-gnu) compiled by GNU C version 13.3.0, GMP version 6.3.0, MPFR version 4.2.1, MPC version 1.3.1, isl version isl-0.26-GMP @@ -87,15 +87,15 @@ events: /usr/include End of search list. Compiler executable checksum: 7896445e4990772fdae9dc0659a99266 - COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_c98c7.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_c98c7.dir/' - as -v --64 -o CMakeFiles/cmTC_c98c7.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccGqwDi1.s + COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_3d47d.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_3d47d.dir/' + as -v --64 -o CMakeFiles/cmTC_3d47d.dir/CMakeCXXCompilerABI.cpp.o /tmp/cc5YDuu5.s GNU assembler version 2.42 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.42 COMPILER_PATH=/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/ LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../:/lib/:/usr/lib/ - COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_c98c7.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_c98c7.dir/CMakeCXXCompilerABI.cpp.' - Linking CXX executable cmTC_c98c7 - /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_c98c7.dir/link.txt --verbose=1 - /usr/bin/c++ -v CMakeFiles/cmTC_c98c7.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_c98c7 + COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_3d47d.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_3d47d.dir/CMakeCXXCompilerABI.cpp.' + Linking CXX executable cmTC_3d47d + /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_3d47d.dir/link.txt --verbose=1 + /usr/bin/c++ -v CMakeFiles/cmTC_3d47d.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_3d47d Using built-in specs. COLLECT_GCC=/usr/bin/c++ COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper @@ -108,10 +108,10 @@ events: gcc version 13.3.0 (Ubuntu 13.3.0-6ubuntu2~24.04.1) COMPILER_PATH=/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/ LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../:/lib/:/usr/lib/ - COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_c98c7' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_c98c7.' - /usr/libexec/gcc/x86_64-linux-gnu/13/collect2 -plugin /usr/libexec/gcc/x86_64-linux-gnu/13/liblto_plugin.so -plugin-opt=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper -plugin-opt=-fresolution=/tmp/ccGqSXec.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_c98c7 /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/13/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/13 -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/13/../../.. CMakeFiles/cmTC_c98c7.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/13/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crtn.o - COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_c98c7' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_c98c7.' - gmake[1]: Leaving directory '/home/atlas/Documents/Git/panic/build/CMakeFiles/CMakeScratch/TryCompile-KCsEdB' + COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_3d47d' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_3d47d.' + /usr/libexec/gcc/x86_64-linux-gnu/13/collect2 -plugin /usr/libexec/gcc/x86_64-linux-gnu/13/liblto_plugin.so -plugin-opt=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper -plugin-opt=-fresolution=/tmp/cctioRXy.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_3d47d /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/13/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/13 -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/13/../../.. CMakeFiles/cmTC_3d47d.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/13/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crtn.o + COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_3d47d' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_3d47d.' + gmake[1]: Leaving directory '/home/atlas/Documents/Git/panic/build/CMakeFiles/CMakeScratch/TryCompile-Ouh05T' exitCode: 0 - @@ -151,13 +151,13 @@ events: message: | Parsed CXX implicit link information: link line regex: [^( *|.*[/\\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\\]+-)?ld|collect2)[^/\\]*( |$)] - ignore line: [Change Dir: '/home/atlas/Documents/Git/panic/build/CMakeFiles/CMakeScratch/TryCompile-KCsEdB'] + ignore line: [Change Dir: '/home/atlas/Documents/Git/panic/build/CMakeFiles/CMakeScratch/TryCompile-Ouh05T'] ignore line: [] - ignore line: [Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_c98c7/fast] - ignore line: [/usr/bin/gmake -f CMakeFiles/cmTC_c98c7.dir/build.make CMakeFiles/cmTC_c98c7.dir/build] - ignore line: [gmake[1]: Entering directory '/home/atlas/Documents/Git/panic/build/CMakeFiles/CMakeScratch/TryCompile-KCsEdB'] - ignore line: [Building CXX object CMakeFiles/cmTC_c98c7.dir/CMakeCXXCompilerABI.cpp.o] - ignore line: [/usr/bin/c++ -v -o CMakeFiles/cmTC_c98c7.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-3.28/Modules/CMakeCXXCompilerABI.cpp] + ignore line: [Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_3d47d/fast] + ignore line: [/usr/bin/gmake -f CMakeFiles/cmTC_3d47d.dir/build.make CMakeFiles/cmTC_3d47d.dir/build] + ignore line: [gmake[1]: Entering directory '/home/atlas/Documents/Git/panic/build/CMakeFiles/CMakeScratch/TryCompile-Ouh05T'] + ignore line: [Building CXX object CMakeFiles/cmTC_3d47d.dir/CMakeCXXCompilerABI.cpp.o] + ignore line: [/usr/bin/c++ -v -o CMakeFiles/cmTC_3d47d.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-3.28/Modules/CMakeCXXCompilerABI.cpp] ignore line: [Using built-in specs.] ignore line: [COLLECT_GCC=/usr/bin/c++] ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa] @@ -167,8 +167,8 @@ events: ignore line: [Thread model: posix] ignore line: [Supported LTO compression algorithms: zlib zstd] ignore line: [gcc version 13.3.0 (Ubuntu 13.3.0-6ubuntu2~24.04.1) ] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_c98c7.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_c98c7.dir/'] - ignore line: [ /usr/libexec/gcc/x86_64-linux-gnu/13/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/share/cmake-3.28/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_c98c7.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccGqwDi1.s] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_3d47d.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_3d47d.dir/'] + ignore line: [ /usr/libexec/gcc/x86_64-linux-gnu/13/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/share/cmake-3.28/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_3d47d.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/cc5YDuu5.s] ignore line: [GNU C++17 (Ubuntu 13.3.0-6ubuntu2~24.04.1) version 13.3.0 (x86_64-linux-gnu)] ignore line: [ compiled by GNU C version 13.3.0 GMP version 6.3.0 MPFR version 4.2.1 MPC version 1.3.1 isl version isl-0.26-GMP] ignore line: [] @@ -189,15 +189,15 @@ events: ignore line: [ /usr/include] ignore line: [End of search list.] ignore line: [Compiler executable checksum: 7896445e4990772fdae9dc0659a99266] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_c98c7.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_c98c7.dir/'] - ignore line: [ as -v --64 -o CMakeFiles/cmTC_c98c7.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccGqwDi1.s] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_3d47d.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_3d47d.dir/'] + ignore line: [ as -v --64 -o CMakeFiles/cmTC_3d47d.dir/CMakeCXXCompilerABI.cpp.o /tmp/cc5YDuu5.s] ignore line: [GNU assembler version 2.42 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.42] ignore line: [COMPILER_PATH=/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/] ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../:/lib/:/usr/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_c98c7.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_c98c7.dir/CMakeCXXCompilerABI.cpp.'] - ignore line: [Linking CXX executable cmTC_c98c7] - ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_c98c7.dir/link.txt --verbose=1] - ignore line: [/usr/bin/c++ -v CMakeFiles/cmTC_c98c7.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_c98c7 ] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_3d47d.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_3d47d.dir/CMakeCXXCompilerABI.cpp.'] + ignore line: [Linking CXX executable cmTC_3d47d] + ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_3d47d.dir/link.txt --verbose=1] + ignore line: [/usr/bin/c++ -v CMakeFiles/cmTC_3d47d.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_3d47d ] ignore line: [Using built-in specs.] ignore line: [COLLECT_GCC=/usr/bin/c++] ignore line: [COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper] @@ -210,13 +210,13 @@ events: ignore line: [gcc version 13.3.0 (Ubuntu 13.3.0-6ubuntu2~24.04.1) ] ignore line: [COMPILER_PATH=/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/] ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../:/lib/:/usr/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_c98c7' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_c98c7.'] - link line: [ /usr/libexec/gcc/x86_64-linux-gnu/13/collect2 -plugin /usr/libexec/gcc/x86_64-linux-gnu/13/liblto_plugin.so -plugin-opt=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper -plugin-opt=-fresolution=/tmp/ccGqSXec.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_c98c7 /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/13/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/13 -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/13/../../.. CMakeFiles/cmTC_c98c7.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/13/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crtn.o] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_3d47d' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_3d47d.'] + link line: [ /usr/libexec/gcc/x86_64-linux-gnu/13/collect2 -plugin /usr/libexec/gcc/x86_64-linux-gnu/13/liblto_plugin.so -plugin-opt=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper -plugin-opt=-fresolution=/tmp/cctioRXy.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_3d47d /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/13/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/13 -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/13/../../.. CMakeFiles/cmTC_3d47d.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/13/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crtn.o] arg [/usr/libexec/gcc/x86_64-linux-gnu/13/collect2] ==> ignore arg [-plugin] ==> ignore arg [/usr/libexec/gcc/x86_64-linux-gnu/13/liblto_plugin.so] ==> ignore arg [-plugin-opt=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper] ==> ignore - arg [-plugin-opt=-fresolution=/tmp/ccGqSXec.res] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/cctioRXy.res] ==> ignore arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore arg [-plugin-opt=-pass-through=-lgcc] ==> ignore arg [-plugin-opt=-pass-through=-lc] ==> ignore @@ -234,7 +234,7 @@ events: arg [-znow] ==> ignore arg [-zrelro] ==> ignore arg [-o] ==> ignore - arg [cmTC_c98c7] ==> ignore + arg [cmTC_3d47d] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/Scrt1.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/Scrt1.o] arg [/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crti.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crti.o] arg [/usr/lib/gcc/x86_64-linux-gnu/13/crtbeginS.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/13/crtbeginS.o] @@ -246,7 +246,7 @@ events: arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu] arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] arg [-L/usr/lib/gcc/x86_64-linux-gnu/13/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/13/../../..] - arg [CMakeFiles/cmTC_c98c7.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [CMakeFiles/cmTC_3d47d.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore arg [-lstdc++] ==> lib [stdc++] arg [-lm] ==> lib [m] arg [-lgcc_s] ==> lib [gcc_s] @@ -274,3 +274,249 @@ events: ... + +--- +events: + - + kind: "try_compile-v1" + backtrace: + - "/usr/share/cmake-3.28/Modules/FindOpenMP.cmake:219 (try_compile)" + - "/usr/share/cmake-3.28/Modules/FindOpenMP.cmake:486 (_OPENMP_GET_FLAGS)" + - "CMakeLists.txt:77 (find_package)" + description: "Detecting CXX OpenMP compiler info" + directories: + source: "/home/atlas/Documents/Git/panic/build/CMakeFiles/CMakeScratch/TryCompile-eJXniH" + binary: "/home/atlas/Documents/Git/panic/build/CMakeFiles/CMakeScratch/TryCompile-eJXniH" + cmakeVariables: + CMAKE_CXX_FLAGS: "" + CMAKE_CXX_FLAGS_DEBUG: "-g" + CMAKE_EXE_LINKER_FLAGS: "" + buildResult: + variable: "OpenMP_COMPILE_RESULT_CXX_fopenmp" + cached: true + stdout: | + Change Dir: '/home/atlas/Documents/Git/panic/build/CMakeFiles/CMakeScratch/TryCompile-eJXniH' + + Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_8e28f/fast + /usr/bin/gmake -f CMakeFiles/cmTC_8e28f.dir/build.make CMakeFiles/cmTC_8e28f.dir/build + gmake[1]: Entering directory '/home/atlas/Documents/Git/panic/build/CMakeFiles/CMakeScratch/TryCompile-eJXniH' + Building CXX object CMakeFiles/cmTC_8e28f.dir/OpenMPTryFlag.cpp.o + /usr/bin/c++ -fopenmp -v -std=c++11 -o CMakeFiles/cmTC_8e28f.dir/OpenMPTryFlag.cpp.o -c /home/atlas/Documents/Git/panic/build/CMakeFiles/CMakeScratch/TryCompile-eJXniH/OpenMPTryFlag.cpp + Using built-in specs. + COLLECT_GCC=/usr/bin/c++ + OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa + OFFLOAD_TARGET_DEFAULT=1 + Target: x86_64-linux-gnu + Configured with: ../src/configure -v --with-pkgversion='Ubuntu 13.3.0-6ubuntu2~24.04.1' --with-bugurl=file:///usr/share/doc/gcc-13/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-13 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/libexec --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-libstdcxx-backtrace --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --enable-cet --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-13-EldibY/gcc-13-13.3.0/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-13-EldibY/gcc-13-13.3.0/debian/tmp-gcn/usr --enable-offload-defaulted --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=2 + Thread model: posix + Supported LTO compression algorithms: zlib zstd + gcc version 13.3.0 (Ubuntu 13.3.0-6ubuntu2~24.04.1) + COLLECT_GCC_OPTIONS='-fopenmp' '-v' '-std=c++11' '-o' 'CMakeFiles/cmTC_8e28f.dir/OpenMPTryFlag.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-pthread' '-dumpdir' 'CMakeFiles/cmTC_8e28f.dir/' + /usr/libexec/gcc/x86_64-linux-gnu/13/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE -D_REENTRANT /home/atlas/Documents/Git/panic/build/CMakeFiles/CMakeScratch/TryCompile-eJXniH/OpenMPTryFlag.cpp -quiet -dumpdir CMakeFiles/cmTC_8e28f.dir/ -dumpbase OpenMPTryFlag.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -std=c++11 -version -fopenmp -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccRuHjKb.s + GNU C++11 (Ubuntu 13.3.0-6ubuntu2~24.04.1) version 13.3.0 (x86_64-linux-gnu) + compiled by GNU C version 13.3.0, GMP version 6.3.0, MPFR version 4.2.1, MPC version 1.3.1, isl version isl-0.26-GMP + + GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 + ignoring duplicate directory "/usr/include/x86_64-linux-gnu/c++/13" + ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu" + ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/13/include-fixed/x86_64-linux-gnu" + ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/13/include-fixed" + ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/13/../../../../x86_64-linux-gnu/include" + #include "..." search starts here: + #include <...> search starts here: + /usr/include/c++/13 + /usr/include/x86_64-linux-gnu/c++/13 + /usr/include/c++/13/backward + /usr/lib/gcc/x86_64-linux-gnu/13/include + /usr/local/include + /usr/include/x86_64-linux-gnu + /usr/include + End of search list. + Compiler executable checksum: 7896445e4990772fdae9dc0659a99266 + COLLECT_GCC_OPTIONS='-fopenmp' '-v' '-std=c++11' '-o' 'CMakeFiles/cmTC_8e28f.dir/OpenMPTryFlag.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-pthread' '-dumpdir' 'CMakeFiles/cmTC_8e28f.dir/' + as -v --64 -o CMakeFiles/cmTC_8e28f.dir/OpenMPTryFlag.cpp.o /tmp/ccRuHjKb.s + GNU assembler version 2.42 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.42 + COMPILER_PATH=/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/ + LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../:/lib/:/usr/lib/ + COLLECT_GCC_OPTIONS='-fopenmp' '-v' '-std=c++11' '-o' 'CMakeFiles/cmTC_8e28f.dir/OpenMPTryFlag.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-pthread' '-dumpdir' 'CMakeFiles/cmTC_8e28f.dir/OpenMPTryFlag.cpp.' + Linking CXX executable cmTC_8e28f + /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_8e28f.dir/link.txt --verbose=1 + /usr/bin/c++ -fopenmp -v CMakeFiles/cmTC_8e28f.dir/OpenMPTryFlag.cpp.o -o cmTC_8e28f -v + Using built-in specs. + COLLECT_GCC=/usr/bin/c++ + COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper + OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa + OFFLOAD_TARGET_DEFAULT=1 + Target: x86_64-linux-gnu + Configured with: ../src/configure -v --with-pkgversion='Ubuntu 13.3.0-6ubuntu2~24.04.1' --with-bugurl=file:///usr/share/doc/gcc-13/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-13 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/libexec --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-libstdcxx-backtrace --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --enable-cet --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-13-EldibY/gcc-13-13.3.0/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-13-EldibY/gcc-13-13.3.0/debian/tmp-gcn/usr --enable-offload-defaulted --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=2 + Thread model: posix + Supported LTO compression algorithms: zlib zstd + gcc version 13.3.0 (Ubuntu 13.3.0-6ubuntu2~24.04.1) + COMPILER_PATH=/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/ + LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../:/lib/:/usr/lib/ + Reading specs from /usr/lib/gcc/x86_64-linux-gnu/13/libgomp.spec + COLLECT_GCC_OPTIONS='-fopenmp' '-v' '-o' 'cmTC_8e28f' '-v' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-pthread' '-dumpdir' 'cmTC_8e28f.' + /usr/libexec/gcc/x86_64-linux-gnu/13/collect2 -plugin /usr/libexec/gcc/x86_64-linux-gnu/13/liblto_plugin.so -plugin-opt=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper -plugin-opt=-fresolution=/tmp/ccyhi8vH.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lpthread -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_8e28f /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/13/crtbeginS.o /usr/lib/gcc/x86_64-linux-gnu/13/crtoffloadbegin.o -L/usr/lib/gcc/x86_64-linux-gnu/13 -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/13/../../.. CMakeFiles/cmTC_8e28f.dir/OpenMPTryFlag.cpp.o -lstdc++ -lm -lgomp -lgcc_s -lgcc -lpthread -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/13/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crtn.o /usr/lib/gcc/x86_64-linux-gnu/13/crtoffloadend.o + COLLECT_GCC_OPTIONS='-fopenmp' '-v' '-o' 'cmTC_8e28f' '-v' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-pthread' '-dumpdir' 'cmTC_8e28f.' + gmake[1]: Leaving directory '/home/atlas/Documents/Git/panic/build/CMakeFiles/CMakeScratch/TryCompile-eJXniH' + + exitCode: 0 + - + kind: "message-v1" + backtrace: + - "/usr/share/cmake-3.28/Modules/FindOpenMP.cmake:262 (message)" + - "/usr/share/cmake-3.28/Modules/FindOpenMP.cmake:486 (_OPENMP_GET_FLAGS)" + - "CMakeLists.txt:77 (find_package)" + message: | + Parsed CXX OpenMP implicit link information from above output: + link line regex: [^( *|.*[/\\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\\]+-)?ld|collect2)[^/\\]*( |$)] + ignore line: [Change Dir: '/home/atlas/Documents/Git/panic/build/CMakeFiles/CMakeScratch/TryCompile-eJXniH'] + ignore line: [] + ignore line: [Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_8e28f/fast] + ignore line: [/usr/bin/gmake -f CMakeFiles/cmTC_8e28f.dir/build.make CMakeFiles/cmTC_8e28f.dir/build] + ignore line: [gmake[1]: Entering directory '/home/atlas/Documents/Git/panic/build/CMakeFiles/CMakeScratch/TryCompile-eJXniH'] + ignore line: [Building CXX object CMakeFiles/cmTC_8e28f.dir/OpenMPTryFlag.cpp.o] + ignore line: [/usr/bin/c++ -fopenmp -v -std=c++11 -o CMakeFiles/cmTC_8e28f.dir/OpenMPTryFlag.cpp.o -c /home/atlas/Documents/Git/panic/build/CMakeFiles/CMakeScratch/TryCompile-eJXniH/OpenMPTryFlag.cpp] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/c++] + ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa] + ignore line: [OFFLOAD_TARGET_DEFAULT=1] + ignore line: [Target: x86_64-linux-gnu] + ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 13.3.0-6ubuntu2~24.04.1' --with-bugurl=file:///usr/share/doc/gcc-13/README.Bugs --enable-languages=c ada c++ go d fortran objc obj-c++ m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-13 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/libexec --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-libstdcxx-backtrace --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --enable-cet --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-13-EldibY/gcc-13-13.3.0/debian/tmp-nvptx/usr amdgcn-amdhsa=/build/gcc-13-EldibY/gcc-13-13.3.0/debian/tmp-gcn/usr --enable-offload-defaulted --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=2] + ignore line: [Thread model: posix] + ignore line: [Supported LTO compression algorithms: zlib zstd] + ignore line: [gcc version 13.3.0 (Ubuntu 13.3.0-6ubuntu2~24.04.1) ] + ignore line: [COLLECT_GCC_OPTIONS='-fopenmp' '-v' '-std=c++11' '-o' 'CMakeFiles/cmTC_8e28f.dir/OpenMPTryFlag.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-pthread' '-dumpdir' 'CMakeFiles/cmTC_8e28f.dir/'] + ignore line: [ /usr/libexec/gcc/x86_64-linux-gnu/13/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE -D_REENTRANT /home/atlas/Documents/Git/panic/build/CMakeFiles/CMakeScratch/TryCompile-eJXniH/OpenMPTryFlag.cpp -quiet -dumpdir CMakeFiles/cmTC_8e28f.dir/ -dumpbase OpenMPTryFlag.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -std=c++11 -version -fopenmp -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccRuHjKb.s] + ignore line: [GNU C++11 (Ubuntu 13.3.0-6ubuntu2~24.04.1) version 13.3.0 (x86_64-linux-gnu)] + ignore line: [ compiled by GNU C version 13.3.0 GMP version 6.3.0 MPFR version 4.2.1 MPC version 1.3.1 isl version isl-0.26-GMP] + ignore line: [] + ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] + ignore line: [ignoring duplicate directory "/usr/include/x86_64-linux-gnu/c++/13"] + ignore line: [ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"] + ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/13/include-fixed/x86_64-linux-gnu"] + ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/13/include-fixed"] + ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/13/../../../../x86_64-linux-gnu/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /usr/include/c++/13] + ignore line: [ /usr/include/x86_64-linux-gnu/c++/13] + ignore line: [ /usr/include/c++/13/backward] + ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/13/include] + ignore line: [ /usr/local/include] + ignore line: [ /usr/include/x86_64-linux-gnu] + ignore line: [ /usr/include] + ignore line: [End of search list.] + ignore line: [Compiler executable checksum: 7896445e4990772fdae9dc0659a99266] + ignore line: [COLLECT_GCC_OPTIONS='-fopenmp' '-v' '-std=c++11' '-o' 'CMakeFiles/cmTC_8e28f.dir/OpenMPTryFlag.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-pthread' '-dumpdir' 'CMakeFiles/cmTC_8e28f.dir/'] + ignore line: [ as -v --64 -o CMakeFiles/cmTC_8e28f.dir/OpenMPTryFlag.cpp.o /tmp/ccRuHjKb.s] + ignore line: [GNU assembler version 2.42 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.42] + ignore line: [COMPILER_PATH=/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-fopenmp' '-v' '-std=c++11' '-o' 'CMakeFiles/cmTC_8e28f.dir/OpenMPTryFlag.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-pthread' '-dumpdir' 'CMakeFiles/cmTC_8e28f.dir/OpenMPTryFlag.cpp.'] + ignore line: [Linking CXX executable cmTC_8e28f] + ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_8e28f.dir/link.txt --verbose=1] + ignore line: [/usr/bin/c++ -fopenmp -v CMakeFiles/cmTC_8e28f.dir/OpenMPTryFlag.cpp.o -o cmTC_8e28f -v ] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/c++] + ignore line: [COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper] + ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa] + ignore line: [OFFLOAD_TARGET_DEFAULT=1] + ignore line: [Target: x86_64-linux-gnu] + ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 13.3.0-6ubuntu2~24.04.1' --with-bugurl=file:///usr/share/doc/gcc-13/README.Bugs --enable-languages=c ada c++ go d fortran objc obj-c++ m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-13 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/libexec --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-libstdcxx-backtrace --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --enable-cet --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-13-EldibY/gcc-13-13.3.0/debian/tmp-nvptx/usr amdgcn-amdhsa=/build/gcc-13-EldibY/gcc-13-13.3.0/debian/tmp-gcn/usr --enable-offload-defaulted --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=2] + ignore line: [Thread model: posix] + ignore line: [Supported LTO compression algorithms: zlib zstd] + ignore line: [gcc version 13.3.0 (Ubuntu 13.3.0-6ubuntu2~24.04.1) ] + ignore line: [COMPILER_PATH=/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/13/:/usr/libexec/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/13/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/13/../../../:/lib/:/usr/lib/] + ignore line: [Reading specs from /usr/lib/gcc/x86_64-linux-gnu/13/libgomp.spec] + ignore line: [COLLECT_GCC_OPTIONS='-fopenmp' '-v' '-o' 'cmTC_8e28f' '-v' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-pthread' '-dumpdir' 'cmTC_8e28f.'] + link line: [ /usr/libexec/gcc/x86_64-linux-gnu/13/collect2 -plugin /usr/libexec/gcc/x86_64-linux-gnu/13/liblto_plugin.so -plugin-opt=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper -plugin-opt=-fresolution=/tmp/ccyhi8vH.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lpthread -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_8e28f /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/13/crtbeginS.o /usr/lib/gcc/x86_64-linux-gnu/13/crtoffloadbegin.o -L/usr/lib/gcc/x86_64-linux-gnu/13 -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/13/../../.. CMakeFiles/cmTC_8e28f.dir/OpenMPTryFlag.cpp.o -lstdc++ -lm -lgomp -lgcc_s -lgcc -lpthread -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/13/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/crtn.o /usr/lib/gcc/x86_64-linux-gnu/13/crtoffloadend.o] + arg [/usr/libexec/gcc/x86_64-linux-gnu/13/collect2] ==> ignore + arg [-plugin] ==> ignore + arg [/usr/libexec/gcc/x86_64-linux-gnu/13/liblto_plugin.so] ==> ignore + arg [-plugin-opt=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/ccyhi8vH.res] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [-plugin-opt=-pass-through=-lpthread] ==> ignore + arg [-plugin-opt=-pass-through=-lc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [--build-id] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [elf_x86_64] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--as-needed] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib64/ld-linux-x86-64.so.2] ==> ignore + arg [-pie] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [-o] ==> ignore + arg [cmTC_8e28f] ==> ignore + arg [-L/usr/lib/gcc/x86_64-linux-gnu/13] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/13] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib] + arg [-L/lib/x86_64-linux-gnu] ==> dir [/lib/x86_64-linux-gnu] + arg [-L/lib/../lib] ==> dir [/lib/../lib] + arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu] + arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/13/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/13/../../..] + arg [CMakeFiles/cmTC_8e28f.dir/OpenMPTryFlag.cpp.o] ==> ignore + arg [-lstdc++] ==> lib [stdc++] + arg [-lm] ==> lib [m] + arg [-lgomp] ==> lib [gomp] + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + arg [-lpthread] ==> lib [pthread] + arg [-lc] ==> lib [c] + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/13] ==> [/usr/lib/gcc/x86_64-linux-gnu/13] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/13/../../../../lib] ==> [/usr/lib] + collapse library dir [/lib/x86_64-linux-gnu] ==> [/lib/x86_64-linux-gnu] + collapse library dir [/lib/../lib] ==> [/lib] + collapse library dir [/usr/lib/x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] + collapse library dir [/usr/lib/../lib] ==> [/usr/lib] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/13/../../..] ==> [/usr/lib] + implicit libs: [stdc++;m;gomp;gcc_s;gcc;pthread;c;gcc_s;gcc] + implicit objs: [] + implicit dirs: [/usr/lib/gcc/x86_64-linux-gnu/13;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib] + implicit fwks: [] + + + - + kind: "try_compile-v1" + backtrace: + - "/usr/share/cmake-3.28/Modules/FindOpenMP.cmake:420 (try_compile)" + - "/usr/share/cmake-3.28/Modules/FindOpenMP.cmake:560 (_OPENMP_GET_SPEC_DATE)" + - "CMakeLists.txt:77 (find_package)" + description: "Detecting CXX OpenMP version" + directories: + source: "/home/atlas/Documents/Git/panic/build/CMakeFiles/CMakeScratch/TryCompile-RPDdhY" + binary: "/home/atlas/Documents/Git/panic/build/CMakeFiles/CMakeScratch/TryCompile-RPDdhY" + cmakeVariables: + CMAKE_CXX_FLAGS: "" + CMAKE_CXX_FLAGS_DEBUG: "-g" + CMAKE_EXE_LINKER_FLAGS: "" + buildResult: + variable: "OpenMP_SPECTEST_CXX_" + cached: true + stdout: | + Change Dir: '/home/atlas/Documents/Git/panic/build/CMakeFiles/CMakeScratch/TryCompile-RPDdhY' + + Run Build Command(s): /usr/bin/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_de36e/fast + /usr/bin/gmake -f CMakeFiles/cmTC_de36e.dir/build.make CMakeFiles/cmTC_de36e.dir/build + gmake[1]: Entering directory '/home/atlas/Documents/Git/panic/build/CMakeFiles/CMakeScratch/TryCompile-RPDdhY' + Building CXX object CMakeFiles/cmTC_de36e.dir/OpenMPCheckVersion.cpp.o + /usr/bin/c++ -fopenmp -std=c++11 -o CMakeFiles/cmTC_de36e.dir/OpenMPCheckVersion.cpp.o -c /home/atlas/Documents/Git/panic/build/CMakeFiles/CMakeScratch/TryCompile-RPDdhY/OpenMPCheckVersion.cpp + Linking CXX executable cmTC_de36e + /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_de36e.dir/link.txt --verbose=1 + /usr/bin/c++ -fopenmp CMakeFiles/cmTC_de36e.dir/OpenMPCheckVersion.cpp.o -o cmTC_de36e + gmake[1]: Leaving directory '/home/atlas/Documents/Git/panic/build/CMakeFiles/CMakeScratch/TryCompile-RPDdhY' + + exitCode: 0 +... diff --git a/build/CMakeFiles/FindOpenMP/ompver_CXX.bin b/build/CMakeFiles/FindOpenMP/ompver_CXX.bin new file mode 100755 index 0000000..ffcd59d Binary files /dev/null and b/build/CMakeFiles/FindOpenMP/ompver_CXX.bin differ diff --git a/build/CMakeFiles/Makefile.cmake b/build/CMakeFiles/Makefile.cmake index 8e060da..bee7b56 100644 --- a/build/CMakeFiles/Makefile.cmake +++ b/build/CMakeFiles/Makefile.cmake @@ -17,11 +17,15 @@ set(CMAKE_MAKEFILE_DEPENDS "/usr/share/cmake-3.28/Modules/CMakeGenericSystem.cmake" "/usr/share/cmake-3.28/Modules/CMakeInitializeConfigs.cmake" "/usr/share/cmake-3.28/Modules/CMakeLanguageInformation.cmake" + "/usr/share/cmake-3.28/Modules/CMakeParseImplicitLinkInfo.cmake" "/usr/share/cmake-3.28/Modules/CMakeSystemSpecificInformation.cmake" "/usr/share/cmake-3.28/Modules/CMakeSystemSpecificInitialize.cmake" "/usr/share/cmake-3.28/Modules/Compiler/CMakeCommonCompilerMacros.cmake" "/usr/share/cmake-3.28/Modules/Compiler/GNU-CXX.cmake" "/usr/share/cmake-3.28/Modules/Compiler/GNU.cmake" + "/usr/share/cmake-3.28/Modules/FindOpenMP.cmake" + "/usr/share/cmake-3.28/Modules/FindPackageHandleStandardArgs.cmake" + "/usr/share/cmake-3.28/Modules/FindPackageMessage.cmake" "/usr/share/cmake-3.28/Modules/Platform/Linux-GNU-CXX.cmake" "/usr/share/cmake-3.28/Modules/Platform/Linux-GNU.cmake" "/usr/share/cmake-3.28/Modules/Platform/Linux-Initialize.cmake" diff --git a/build/CMakeFiles/VerifyGlobs.cmake b/build/CMakeFiles/VerifyGlobs.cmake index 2a6528b..10d3c70 100644 --- a/build/CMakeFiles/VerifyGlobs.cmake +++ b/build/CMakeFiles/VerifyGlobs.cmake @@ -2,7 +2,7 @@ # Generated by CMake Version 3.28 cmake_policy(SET CMP0009 NEW) -# PANIC_SOURCES at CMakeLists.txt:22 (file) +# PANIC_SOURCES at CMakeLists.txt:40 (file) file(GLOB_RECURSE NEW_GLOB LIST_DIRECTORIES false "/home/atlas/Documents/Git/panic/src/*.cpp") set(OLD_GLOB "/home/atlas/Documents/Git/panic/src/io/print_tensor.cpp" diff --git a/build/CMakeFiles/panic.dir/build.make b/build/CMakeFiles/panic.dir/build.make index 266b085..5a5d7a6 100644 --- a/build/CMakeFiles/panic.dir/build.make +++ b/build/CMakeFiles/panic.dir/build.make @@ -124,6 +124,8 @@ panic: CMakeFiles/panic.dir/main.cpp.o panic: CMakeFiles/panic.dir/src/io/print_tensor.cpp.o panic: CMakeFiles/panic.dir/src/tensor/vector.cpp.o panic: CMakeFiles/panic.dir/build.make +panic: /usr/lib/gcc/x86_64-linux-gnu/13/libgomp.so +panic: /usr/lib/x86_64-linux-gnu/libpthread.a panic: CMakeFiles/panic.dir/link.txt @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --bold --progress-dir=/home/atlas/Documents/Git/panic/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_4) "Linking CXX executable panic" $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/panic.dir/link.txt --verbose=$(VERBOSE) diff --git a/build/CMakeFiles/panic.dir/flags.make b/build/CMakeFiles/panic.dir/flags.make index d3954d9..9a77c8d 100644 --- a/build/CMakeFiles/panic.dir/flags.make +++ b/build/CMakeFiles/panic.dir/flags.make @@ -2,9 +2,9 @@ # Generated by "Unix Makefiles" Generator, CMake Version 3.28 # compile CXX with /usr/bin/c++ -CXX_DEFINES = +CXX_DEFINES = -DPANIC_OMP_NUM_THREADS=4 -DPANIC_USE_OPENMP=1 CXX_INCLUDES = -I/home/atlas/Documents/Git/panic/include -CXX_FLAGS = -std=c++11 +CXX_FLAGS = -std=c++11 -fopenmp diff --git a/build/CMakeFiles/panic.dir/link.txt b/build/CMakeFiles/panic.dir/link.txt index 3855dec..038086a 100644 --- a/build/CMakeFiles/panic.dir/link.txt +++ b/build/CMakeFiles/panic.dir/link.txt @@ -1 +1 @@ -/usr/bin/c++ CMakeFiles/panic.dir/main.cpp.o CMakeFiles/panic.dir/src/io/print_tensor.cpp.o CMakeFiles/panic.dir/src/tensor/vector.cpp.o -o panic +/usr/bin/c++ CMakeFiles/panic.dir/main.cpp.o CMakeFiles/panic.dir/src/io/print_tensor.cpp.o CMakeFiles/panic.dir/src/tensor/vector.cpp.o -o panic /usr/lib/gcc/x86_64-linux-gnu/13/libgomp.so /usr/lib/x86_64-linux-gnu/libpthread.a diff --git a/build/panic b/build/panic index 10f7e5f..18052e4 100755 Binary files a/build/panic and b/build/panic differ diff --git a/clean_run.sh b/clean_run.sh new file mode 100755 index 0000000..46b766d --- /dev/null +++ b/clean_run.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash +set -e + +#--------------------------------------------------------------------------------------------------------------------------- +# CLEAN BUILD FILES +#--------------------------------------------------------------------------------------------------------------------------- + +# Removes the CMake build folder. +# This deletes compiled files, cached CMake settings, and the old executable. +rm -rf build + +#--------------------------------------------------------------------------------------------------------------------------- +# RECONFIGURE, REBUILD, AND RUN +#--------------------------------------------------------------------------------------------------------------------------- + +# Forward all arguments to run.sh. +# +# Examples: +# ./clean_run.sh +# ./clean_run.sh omp +# ./clean_run.sh omp 4 +./run.sh "$@" \ No newline at end of file diff --git a/include/config/omp.hpp b/include/config/omp.hpp new file mode 100644 index 0000000..471420b --- /dev/null +++ b/include/config/omp.hpp @@ -0,0 +1,188 @@ +/**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + * + * PANIC + * Portable Algorithms and Numerics In C++ + * + * Scientific computing from scratch, with feeling. + * + * Copyright (c) 2026 Michelle Bausager + * + * This file is part of PANIC. + * + * PANIC is free software licensed under the GNU General Public License v3.0 or later. + * You may redistribute and/or modify it under the terms of the GPL. + * + * PANIC 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 LICENSE file for the full license text. + * + * SPDX-License-Identifier: GPL-3.0-or-later + * + *++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + * + * Project Name: PANIC + * Module Name: config + * File Name: omp.hpp + * Revision: 0.1.0 + * Date: 20-06-2026 + * Author: Michelle Bausager + * + * Description: + * Defines which types will be used in the rest of the libraries. + * + *++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +#pragma once + +//--------------------------------------------------------------------------------------------------------------------------- +// INCLUDE DESCRIPTION +//--------------------------------------------------------------------------------------------------------------------------- + +// None. + +//--------------------------------------------------------------------------------------------------------------------------- +// DEFINE DESCRIPTION +//--------------------------------------------------------------------------------------------------------------------------- + +//--------------------------------------------------------------------------------------------------------------------------- +// OPENMP CONFIGURATION DEFAULTS +//--------------------------------------------------------------------------------------------------------------------------- + +// If CMake did not define PANIC_USE_OPENMP, define it as 0. +// This makes OpenMP disabled by default. +// +// CMake can override this with: +// PANIC_USE_OPENMP=1 +#ifndef PANIC_USE_OPENMP +#define PANIC_USE_OPENMP 0 +#endif + +// If CMake did not define PANIC_OMP_NUM_THREADS, define it as 0. +// +// Meaning: +// 0 = let OpenMP choose the default number of threads +// 1 = use 1 thread +// 2 = use 2 threads +// 4 = use 4 threads +// etc. +#ifndef PANIC_OMP_NUM_THREADS +#define PANIC_OMP_NUM_THREADS 0 +#endif + +//--------------------------------------------------------------------------------------------------------------------------- +// OPENMP AVAILABILITY CHECK +//--------------------------------------------------------------------------------------------------------------------------- + +// PANIC_HAS_OPENMP becomes 1 only if: +// +// 1. PANIC_USE_OPENMP is enabled by CMake +// 2. The compiler actually has OpenMP enabled +// +// _OPENMP is automatically defined by the compiler when OpenMP support is active. +// For example, GCC defines _OPENMP when compiling with -fopenmp. +#if PANIC_USE_OPENMP && defined(_OPENMP) +#define PANIC_HAS_OPENMP 1 +#else +#define PANIC_HAS_OPENMP 0 +#endif + +//--------------------------------------------------------------------------------------------------------------------------- +// STRINGIFY HELPERS +//--------------------------------------------------------------------------------------------------------------------------- + +// These macros turn macro values into text. +// +// Example: +// PANIC_OMP_NUM_THREADS = 4 +// +// We need to turn that into: +// +// "omp parallel for num_threads(4)" +// +// The two-step version is needed so that macros expand before becoming text. +#define PANIC_STRINGIFY_DETAIL(x) #x +#define PANIC_STRINGIFY(x) PANIC_STRINGIFY_DETAIL(x) + +//--------------------------------------------------------------------------------------------------------------------------- +// OPENMP PARALLEL FOR MACROS +//--------------------------------------------------------------------------------------------------------------------------- + +#if PANIC_HAS_OPENMP + + #if PANIC_OMP_NUM_THREADS > 0 + + // Expands to: + // #pragma omp parallel for num_threads(PANIC_OMP_NUM_THREADS) + #define PANIC_OMP_PARALLEL_FOR \ + _Pragma(PANIC_STRINGIFY(omp parallel for num_threads(PANIC_OMP_NUM_THREADS))) + + // Expands to: + // #pragma omp parallel for if(condition) num_threads(PANIC_OMP_NUM_THREADS) + // + // The loop only runs in parallel if condition is true. + #define PANIC_OMP_PARALLEL_FOR_IF(condition) \ + _Pragma(PANIC_STRINGIFY(omp parallel for if(condition) num_threads(PANIC_OMP_NUM_THREADS))) + + #else + + // Expands to: + // #pragma omp parallel for + // + // OpenMP chooses the default number of threads. + #define PANIC_OMP_PARALLEL_FOR \ + _Pragma("omp parallel for") + + // Expands to: + // #pragma omp parallel for if(condition) + // + // OpenMP chooses the default number of threads. + // The loop only runs in parallel if condition is true. + #define PANIC_OMP_PARALLEL_FOR_IF(condition) \ + _Pragma(PANIC_STRINGIFY(omp parallel for if(condition))) + + #endif + +#else + + // If OpenMP is disabled or unavailable, these macros expand to nothing. + // + // So this: + // + // PANIC_OMP_PARALLEL_FOR + // for (...) { + // ... + // } + // + // becomes just: + // + // for (...) { + // ... + // } + // + // That means the same code still works on microcontrollers and non-OpenMP builds. + #define PANIC_OMP_PARALLEL_FOR + #define PANIC_OMP_PARALLEL_FOR_IF(condition) + +#endif + +//--------------------------------------------------------------------------------------------------------------------------- +// TYPE DESCRIPTION +//--------------------------------------------------------------------------------------------------------------------------- + +// None. + +//--------------------------------------------------------------------------------------------------------------------------- +// VARIABLE DESCRIPTION +//--------------------------------------------------------------------------------------------------------------------------- + +// None. + +//--------------------------------------------------------------------------------------------------------------------------- +// FUNCTION PROTOTYPE +//--------------------------------------------------------------------------------------------------------------------------- + +// None. + +//PANIC_OMP_PARALLEL_FOR +//for (panic::uint_t i = 0; i < length; ++i) { +// data[i] = value; +//} \ No newline at end of file diff --git a/include/io/print_tensor.hpp b/include/io/print_tensor.hpp index 421ef16..91c0f9e 100644 --- a/include/io/print_tensor.hpp +++ b/include/io/print_tensor.hpp @@ -54,10 +54,12 @@ namespace io{ // Function Name : panic::io::print // // Description: -// Prints a panic::tensor::vector out in the terminal +// Prints a vector out in the terminal // // Inputs: -// v const panic::tensor::vector& +// v const panic::tensor::uint_vector& +// const panic::tensor::int_vector& +// const panic::tensor::real_vector& // vector to print // // Outputs: @@ -69,7 +71,9 @@ namespace io{ // Notes: // The vector is printed out in square brackets. //-------------------------------------------------------------------------------------------------------------------------- -void print(const panic::tensor::vector& v); +void print(const panic::tensor::uint_vector& v); +void print(const panic::tensor::int_vector& v); +void print(const panic::tensor::real_vector& v); diff --git a/include/tensor/vector.hpp b/include/tensor/vector.hpp index 94f5687..973d2bb 100644 --- a/include/tensor/vector.hpp +++ b/include/tensor/vector.hpp @@ -66,9 +66,10 @@ namespace panic{ namespace tensor{ +template struct vector{ panic::uint_t length; - panic::real_t* data; + T* data; // empty contructor vector(); @@ -77,7 +78,7 @@ struct vector{ vector(panic::uint_t size); // contructor with size allocation and sets it all to a value - vector(panic::uint_t size, panic::real_t value); + vector(panic::uint_t size, T value); // copy-contructor // vector a(3); @@ -101,22 +102,40 @@ struct vector{ bool resize(panic::uint_t new_size); // fill data with value - bool fill(panic::real_t value); + bool fill(T value); // lets you read and write v[index] - panic::real_t& operator[](panic::uint_t index); + T& operator[](panic::uint_t index); // lets you read v[index] from a const vector - const panic::real_t& operator[](panic::uint_t index) const; + const T& operator[](panic::uint_t index) const; // lets you read and write v.at(index) - panic::real_t& at(panic::uint_t index); + T& at(panic::uint_t index); // lets you read v.at(index) from a const vector - const panic::real_t& at(panic::uint_t index) const; + const T& at(panic::uint_t index) const; }; + +//--------------------------------------------------------------------------------------------------------------------------- +// TYPE ALIASES +//--------------------------------------------------------------------------------------------------------------------------- + +typedef vector real_vector; +typedef vector int_vector; +typedef vector uint_vector; + +//--------------------------------------------------------------------------------------------------------------------------- +// EXPLICIT TEMPLATE DECLARATION +//--------------------------------------------------------------------------------------------------------------------------- + +extern template struct vector; +extern template struct vector; +extern template struct vector; + + } // namespace tensor } // namespace panic diff --git a/main.cpp b/main.cpp index 9ab9e53..c46dd7a 100644 --- a/main.cpp +++ b/main.cpp @@ -62,9 +62,15 @@ panic::real_t x = 2.4; int main(void) { - panic::tensor::vector a(3); + panic::tensor::real_vector a(3); + panic::tensor::uint_vector b(3); + panic::tensor::int_vector c(3); a[2] = 1.2; + b[2] = 3; + c[2] = -3; panic::io::print(a); + panic::io::print(b); + panic::io::print(c); std::cout << a[100] << std::endl; std::cout << a.at(100) << std::endl; std::cout << panic::pi << std::endl; diff --git a/run.sh b/run.sh index 7099dfa..796ac73 100755 --- a/run.sh +++ b/run.sh @@ -1,9 +1,49 @@ #!/usr/bin/env bash set -e -# Configures CMake -cmake -S . -B build -# Compiles the program +#--------------------------------------------------------------------------------------------------------------------------- +# RUN CONFIGURATION +#--------------------------------------------------------------------------------------------------------------------------- + +# First argument chooses build mode: +# ./run.sh -> serial build +# ./run.sh omp -> OpenMP build +# +# Second argument chooses number of OpenMP threads: +# ./run.sh omp 4 -> OpenMP build using 4 threads +# +# If thread count is 0, OpenMP chooses the default number of threads. + +BUILD_MODE=${1:-serial} +OMP_THREADS=${2:-0} + +#--------------------------------------------------------------------------------------------------------------------------- +# CMAKE CONFIGURATION +#--------------------------------------------------------------------------------------------------------------------------- + +if [ "$BUILD_MODE" = "omp" ]; then + echo "Configuring PANIC with OpenMP enabled..." + echo "OpenMP threads: $OMP_THREADS" + + cmake -S . -B build \ + -DPANIC_ENABLE_OPENMP=ON \ + -DPANIC_OMP_NUM_THREADS="$OMP_THREADS" +else + echo "Configuring PANIC without OpenMP..." + + cmake -S . -B build \ + -DPANIC_ENABLE_OPENMP=OFF \ + -DPANIC_OMP_NUM_THREADS=0 +fi + +#--------------------------------------------------------------------------------------------------------------------------- +# BUILD +#--------------------------------------------------------------------------------------------------------------------------- + cmake --build build -# Runs the program + +#--------------------------------------------------------------------------------------------------------------------------- +# RUN +#--------------------------------------------------------------------------------------------------------------------------- + ./build/panic \ No newline at end of file diff --git a/src/io/print_tensor.cpp b/src/io/print_tensor.cpp index 48ba6fe..db78bbc 100644 --- a/src/io/print_tensor.cpp +++ b/src/io/print_tensor.cpp @@ -53,7 +53,31 @@ namespace panic { namespace io { -void print(const panic::tensor::vector& v){ + +//-------------------------------------------------------------------------------------------------------------------------- +// Function Name : panic::io::print +// +// Description: +// The vector is printed out in square brackets. +// Overloaded for panic::uint, panic::int and panic::real +//-------------------------------------------------------------------------------------------------------------------------- +void print(const panic::tensor::uint_vector& v){ + std::cout << "["; + for (panic::uint_t i = 0; i < v.size()-1; ++i){ + std::cout << v[i] << ", "; + } + std::cout << v[v.size()-1]<< "]" << std::endl; + +} +void print(const panic::tensor::int_vector& v){ + std::cout << "["; + for (panic::uint_t i = 0; i < v.size()-1; ++i){ + std::cout << v[i] << ", "; + } + std::cout << v[v.size()-1]<< "]" << std::endl; + +} +void print(const panic::tensor::real_vector& v){ std::cout << "["; for (panic::uint_t i = 0; i < v.size()-1; ++i){ std::cout << v[i] << ", "; diff --git a/src/tensor/vector.cpp b/src/tensor/vector.cpp index 2e93cc3..f7fcfa5 100644 --- a/src/tensor/vector.cpp +++ b/src/tensor/vector.cpp @@ -62,7 +62,8 @@ namespace panic{ // Description: // Creates an empty vector. //-------------------------------------------------------------------------------------------------------------------------- -vector::vector() { +template +vector::vector() { length = 0; data = 0; } @@ -73,7 +74,8 @@ vector::vector() { // Description: // Creates a vector with size allocation and initializes all values to zero. //-------------------------------------------------------------------------------------------------------------------------- -vector::vector(panic::uint_t size){ +template +vector::vector(panic::uint_t size){ length = size; if (length == 0){ @@ -81,10 +83,10 @@ vector::vector(panic::uint_t size){ return; } - data = new panic::real_t[length]; + data = new T[length]; for (panic::uint_t i = 0; i < size; ++i){ - data[i] = static_cast(0); + data[i] = static_cast(0); } } @@ -95,7 +97,8 @@ vector::vector(panic::uint_t size){ // Description: // Creates a vector with size allocation and initializes all values. //-------------------------------------------------------------------------------------------------------------------------- -vector::vector(panic::uint_t size, panic::real_t value){ +template +vector::vector(panic::uint_t size, T value){ length = size; if (size == 0){ @@ -103,7 +106,7 @@ vector::vector(panic::uint_t size, panic::real_t value){ return; } - data = new panic::real_t[size]; + data = new T[size]; for (panic::uint_t i = 0; i < size; ++i){ data[i] = value; @@ -118,7 +121,8 @@ vector::vector(panic::uint_t size, panic::real_t value){ // vector a(3); // vector b = a; //-------------------------------------------------------------------------------------------------------------------------- -vector::vector(const vector& other){ +template +vector::vector(const vector& other){ length = other.length; if (length == 0){ @@ -126,7 +130,7 @@ vector::vector(const vector& other){ return; } - data = new panic::real_t[length]; + data = new T[length]; for (panic::uint_t i = 0; i < length; ++i){ data[i] = other.data[i]; @@ -139,7 +143,8 @@ vector::vector(const vector& other){ // Description: // Deletes the data and releases the memory. //-------------------------------------------------------------------------------------------------------------------------- -vector::~vector(){ +template +vector::~vector(){ delete[] data; data = 0; @@ -155,15 +160,16 @@ vector::~vector(){ // vector b(3); // b = a; //-------------------------------------------------------------------------------------------------------------------------- -vector& vector::operator=(const vector& other){ +template +vector& vector::operator=(const vector& other){ if (this == &other){ return *this; } - panic::real_t* new_data = 0; + T* new_data = 0; if (other.length > 0){ - new_data = new panic::real_t[other.length]; + new_data = new T[other.length]; for (panic::uint_t i = 0; i < other.length; ++i){ new_data[i] = other.data[i]; @@ -184,7 +190,8 @@ vector& vector::operator=(const vector& other){ // Description: // Returns the length/size of the vector //-------------------------------------------------------------------------------------------------------------------------- -panic::uint_t vector::size() const{ +template +panic::uint_t vector::size() const{ return length; } @@ -194,7 +201,8 @@ panic::uint_t vector::size() const{ // Description: // Resizes the vector to new length and keeps old values //-------------------------------------------------------------------------------------------------------------------------- -bool vector::resize(panic::uint_t new_size){ +template +bool vector::resize(panic::uint_t new_size){ if (new_size == length){ return true; } @@ -206,7 +214,7 @@ bool vector::resize(panic::uint_t new_size){ return true; } - panic::real_t* new_data = new panic::real_t[new_size]; + T* new_data = new T[new_size]; panic::uint_t copy_size = length; if (new_size < length){ @@ -218,7 +226,7 @@ bool vector::resize(panic::uint_t new_size){ } for (panic::uint_t i = copy_size; i < new_size; ++i){ - new_data[i] = static_cast(0); + new_data[i] = static_cast(0); } delete[] data; @@ -236,7 +244,8 @@ bool vector::resize(panic::uint_t new_size){ // Description: // Fills te vector with a value //-------------------------------------------------------------------------------------------------------------------------- -bool vector::fill(panic::real_t value){ +template +bool vector::fill(T value){ for (panic::uint_t i = 0; i < length; ++i){ data[i] = value; } @@ -250,7 +259,8 @@ bool vector::fill(panic::real_t value){ // Description: // Lets you read and write v[index] //-------------------------------------------------------------------------------------------------------------------------- -panic::real_t& vector::operator[](panic::uint_t index){ +template +T& vector::operator[](panic::uint_t index){ return data[index]; } @@ -260,7 +270,8 @@ panic::real_t& vector::operator[](panic::uint_t index){ // Description: // Lets you read v[index] from a const vector //-------------------------------------------------------------------------------------------------------------------------- -const panic::real_t& vector::operator[](panic::uint_t index) const{ +template +const T& vector::operator[](panic::uint_t index) const{ return data[index]; } @@ -270,7 +281,8 @@ const panic::real_t& vector::operator[](panic::uint_t index) const{ // Description: // Lets you read and write v.at(index) with index bounse //-------------------------------------------------------------------------------------------------------------------------- -panic::real_t& vector::at(panic::uint_t index){ +template +T& vector::at(panic::uint_t index){ if (index >= length){ return data[length-1]; @@ -285,7 +297,8 @@ panic::real_t& vector::at(panic::uint_t index){ // Description: // Lets you read v[index] from a const vector with index bounse //-------------------------------------------------------------------------------------------------------------------------- -const panic::real_t& vector::at(panic::uint_t index) const{ +template +const T& vector::at(panic::uint_t index) const{ if (index >= length){ return data[length-1]; } @@ -293,5 +306,15 @@ const panic::real_t& vector::at(panic::uint_t index) const{ } + +//--------------------------------------------------------------------------------------------------------------------------- +// EXPLICIT TEMPLATE INSTANTIATION +//--------------------------------------------------------------------------------------------------------------------------- + +template struct vector; +template struct vector; +template struct vector; + + } // namespace tensor } // namespace panic \ No newline at end of file