{
    "targets": [
        {
            "target_name": "vita",
            "sources": [
                "src/unity_build/common.cpp",
                "src/unity_build/synthesis.cpp",
                "src/headless/bindings.cpp",
            ],
            "include_dirs": [
                "<!@(node -p \"require('node-addon-api').include\")",
                "headless/JuceLibraryCode",
                "third_party/JUCE/modules",
                "src",
                "src/common",
                "src/common/wavetable",
                "src/interface/editor_components",
                "src/interface/editor_sections",
                "src/interface/look_and_feel",
                "src/interface/wavetable",
                "src/interface/wavetable/editors",
                "src/interface/wavetable/overlays",
                "src/standalone",
                "src/synthesis/synth_engine",
                "src/synthesis/effects",
                "src/synthesis/effects_engine",
                "src/synthesis/filters",
                "src/synthesis/framework",
                "src/synthesis/lookups",
                "src/synthesis/modulators",
                "src/synthesis/modules",
                "src/synthesis/producers",
                "src/synthesis/utilities",
                "third_party",
            ],
            "defines": [
                "HEADLESS=1",
                "NO_AUTH=1",
                'JUCE_JACK_CLIENT_NAME="Vita"',
                'JUCE_ALSA_MIDI_INPUT_NAME="Vita"',
                'JUCE_ALSA_MIDI_OUTPUT_NAME="Vita"',
                "JUCE_USE_XRANDR=0",
                "JUCE_DSP_USE_SHARED_FFTW=1",
                "JUCER_LINUX_MAKE_6B3E762A=1",
                "JUCE_APP_VERSION=99999.9.9",
                "JUCE_APP_VERSION_HEX=0x869f0909",
                "JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1",
                "JUCE_STANDALONE_APPLICATION=0",
                "JUCE_WEB_BROWSER=0",
                "JUCE_USE_CURL=0",
                "JucePlugin_Build_VST=0",
                "JucePlugin_Build_VST3=0",
                "JucePlugin_Build_AU=0",
                "JucePlugin_Build_AUv3=0",
                "JucePlugin_Build_AAX=0",
                "JucePlugin_Build_Standalone=0",
                "JucePlugin_Build_Unity=0",
                "JucePlugin_Build_LV2=0",
            ],
            "cflags_cc": [
                "-fPIC",
                "-std=c++17",
                "-fexceptions",
                "-ffast-math",
                "-ftree-vectorize",
                "-ftree-slp-vectorize",
                "-funroll-loops",
                "-w",
                "-frtti",
            ],
            "conditions": [
                [
                    "OS=='linux'",
                    {
                        "libraries": ["-lsndfile"],
                        "cflags_cc": ["-march=native"],
                        "defines": ["LINUX=1"],
                        "sources": [
                            "headless/JuceLibraryCode/include_juce_audio_basics.cpp",
                            "headless/JuceLibraryCode/include_juce_audio_formats.cpp",
                            "headless/JuceLibraryCode/include_juce_core.cpp",
                            "headless/JuceLibraryCode/include_juce_data_structures.cpp",
                            "headless/JuceLibraryCode/include_juce_dsp.cpp",
                            "headless/JuceLibraryCode/include_juce_events.cpp",
                        ],
                    },
                ],
                [
                    "OS=='mac'",
                    {
                        "defines": ["MAC=1", "MACOS=1"],
                        "xcode_settings": {
                            "GCC_ENABLE_CPP_EXCEPTIONS": "YES",
                            "GCC_ENABLE_CPP_RTTI": "YES",
                            "MACOSX_DEPLOYMENT_TARGET": "11.0",
                            "OTHER_CPLUSPLUSFLAGS": [
                                "-std=c++17",
                                "-ffast-math",
                                "-frtti",
                            ],
                            "OTHER_LDFLAGS": [
                                "-framework",
                                "AppKit",
                                "-framework",
                                "CoreAudio",
                                "-framework",
                                "CoreAudioKit",
                                "-framework",
                                "CoreMIDI",
                                "-framework",
                                "CoreFoundation",
                                "-framework",
                                "Accelerate",
                                "-framework",
                                "AudioToolbox",
                                "-framework",
                                "AVFoundation",
                                "-framework",
                                "AudioUnit",
                                "-framework",
                                "Carbon",
                                "-framework",
                                "Cocoa",
                                "-framework",
                                "IOKit",
                                "-framework",
                                "QuartzCore",
                                "-framework",
                                "Security",
                                "-framework",
                                "WebKit",
                            ],
                        },
                        "sources": [
                            "headless/JuceLibraryCode/include_juce_audio_basics.mm",
                            "headless/JuceLibraryCode/include_juce_audio_formats.mm",
                            "headless/JuceLibraryCode/include_juce_core.mm",
                            "headless/JuceLibraryCode/include_juce_data_structures.mm",
                            "headless/JuceLibraryCode/include_juce_dsp.mm",
                            "headless/JuceLibraryCode/include_juce_events.mm",
                        ],
                    },
                ],
                [
                    "OS=='win'",
                    {
                        "defines": [
                            "_CRT_SECURE_NO_WARNINGS",
                            "_USE_MATH_DEFINES",
                            "WIN32",
                            "_WIN32",
                            "WINDOWS=1",
                        ],
                        "msvs_settings": {
                            "VCCLCompilerTool": {
                                "ExceptionHandling": 1,
                                "RuntimeTypeInfo": "true",
                                "AdditionalOptions": [
                                    "/std:c++17",
                                    "/permissive-",
                                    "/Zc:preprocessor",
                                    "/fp:fast",
                                    "/GR",
                                ],
                            }
                        },
                        "sources": [
                            "headless/JuceLibraryCode/include_juce_audio_basics.cpp",
                            "headless/JuceLibraryCode/include_juce_audio_formats.cpp",
                            "headless/JuceLibraryCode/include_juce_core.cpp",
                            "headless/JuceLibraryCode/include_juce_data_structures.cpp",
                            "headless/JuceLibraryCode/include_juce_dsp.cpp",
                            "headless/JuceLibraryCode/include_juce_events.cpp",
                        ],
                    },
                ],
            ],
        }
    ]
}
