Skip to content

Update v1.1.0#18

Merged
majockbim merged 20 commits into
mainfrom
update/v1-1-0
May 4, 2026
Merged

Update v1.1.0#18
majockbim merged 20 commits into
mainfrom
update/v1-1-0

Conversation

@majockbim

@majockbim majockbim commented May 4, 2026

Copy link
Copy Markdown
Owner

Welcome to V1.1.0!!

This update heavily refers to issue #16

Key Milestones

  • Remove duplicate #includes
  • Rename to spectrum, reflect changes in code, & on release
  • Make code portable to other systems with static linking
  • Eliminate the need for DLL bundling via static compilation
  • Make the program compiler agnostic
  • Add 'contributing' guidelines
  • Add 'contributors'
  • test to see if release .exe can be ran on devices without a compiler

Implementing Static Linking

  1. The Bulk:
    • Changed the linked library from fftw3-3 usingUCRT64 to get a static fftw .a file
  2. Updateed CMakeLists.txt:
    • Added the -static linker flag. This tells the compiler to bundle all dependencies, including the FFTW code and
      the OpenMP runtime (libgomp), directly into the .exe.
  3. Patched third_party/inc/fftw3.h:
    • Commented out #define FFTW_DLL in the header file. This macro was forcing the compiler to look
      for the FFTW functions in a DLL. By disabling it, compiler can find the functions in the static .a
      file instead.
  4. Testing:
    • It works on windows computers that don't have compilers installed!

Compiler Agnosticism

  1. Agnostic OpenMP:
    • Instead of hardcoding -fopenmp, find_package(OpenMP) is used. This allows CMake to automatically
      find the correct flags for MSVC (/openmp), GCC (-fopenmp), or Clang.
  2. Smart Static Linking:
    • For MinGW/GCC: It keeps the -static flag to bundle everything.
    • For MSVC: I used the modern CMake property MSVC_RUNTIME_LIBRARY "MultiThreaded". This is the proper way to tell MSVC to link the C++ runtime statically (equivalent to the /MT compiler flag).
  3. Subsystem Handling:
    • It now explicitly sets the Windows Console subsystem for both compilers (/SUBSYSTEM:CONSOLE
      for MSVC and -mconsole for MinGW).
  4. Cleaner Code:
    • Added standard warning flags (/W4 for MSVC, -Wall for GCC) to help catch potential issues early
      across different compilers.

@majockbim majockbim linked an issue May 4, 2026 that may be closed by this pull request
7 tasks
@majockbim majockbim self-assigned this May 4, 2026
@majockbim majockbim added documentation Improvements or additions to documentation enhancement New feature or request v1.1.0 labels May 4, 2026
majockbim and others added 3 commits May 3, 2026 22:43
Added a Contributors section to acknowledge contributions.
Updated image size in README and removed extra line breaks.
@majockbim majockbim changed the title Update v1.0.0 Update v1.1.0 May 4, 2026
@majockbim majockbim marked this pull request as ready for review May 4, 2026 16:15
@majockbim majockbim merged commit 0267def into main May 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation enhancement New feature or request v1.1.0

Projects

None yet

Development

Successfully merging this pull request may close these issues.

update- v1.1.0

1 participant