NeuralAmpModelerPlugin

Plugin for Neural Amp Modeler
Log | Files | Refs | Submodules | README | LICENSE

common-web.mk (3562B)


      1 PROJECT_ROOT = $(PWD)/..
      2 DEPS_PATH = $(IPLUG2_ROOT)/Dependencies
      3 WAM_SDK_PATH = $(DEPS_PATH)/IPlug/WAM_SDK/wamsdk
      4 WDL_PATH = $(IPLUG2_ROOT)/WDL
      5 IPLUG_PATH = $(IPLUG2_ROOT)/IPlug
      6 SWELL_PATH = $(WDL_PATH)/swell
      7 IGRAPHICS_PATH = $(IPLUG2_ROOT)/IGraphics
      8 CONTROLS_PATH = $(IGRAPHICS_PATH)/Controls
      9 PLATFORMS_PATH = $(IGRAPHICS_PATH)/Platforms
     10 DRAWING_PATH = $(IGRAPHICS_PATH)/Drawing
     11 IGRAPHICS_EXTRAS_PATH = $(IGRAPHICS_PATH)/Extras
     12 IPLUG_EXTRAS_PATH = $(IPLUG_PATH)/Extras
     13 IPLUG_SYNTH_PATH = $(IPLUG_EXTRAS_PATH)/Synth
     14 IPLUG_FAUST_PATH = $(IPLUG_EXTRAS_PATH)/Faust
     15 IPLUG_WEB_PATH = $(IPLUG_PATH)/WEB
     16 NANOVG_PATH = $(DEPS_PATH)/IGraphics/NanoVG/src
     17 NANOSVG_PATH = $(DEPS_PATH)/IGraphics/NanoSVG/src
     18 IMGUI_PATH = $(DEPS_PATH)/IGraphics/imgui
     19 YOGA_PATH = $(DEPS_PATH)/IGraphics/yoga
     20 STB_PATH = $(DEPS_PATH)/IGraphics/STB
     21 
     22 IPLUG_SRC = $(IPLUG_PATH)/IPlugAPIBase.cpp \
     23 	$(IPLUG_PATH)/IPlugParameter.cpp \
     24 	$(IPLUG_PATH)/IPlugPluginBase.cpp \
     25 	$(IPLUG_PATH)/IPlugPaths.cpp \
     26 	$(IPLUG_PATH)/IPlugTimer.cpp
     27 
     28 IGRAPHICS_SRC = $(IGRAPHICS_PATH)/IGraphics.cpp \
     29 	$(IGRAPHICS_PATH)/IControl.cpp \
     30 	$(CONTROLS_PATH)/*.cpp \
     31 	$(PLATFORMS_PATH)/IGraphicsWeb.cpp
     32 
     33 IMGUI_SRC = $(IGRAPHICS_PATH)/IGraphicsImGui.cpp
     34 
     35 INCLUDE_PATHS = -I$(PROJECT_ROOT) \
     36 -I$(WAM_SDK_PATH) \
     37 -I$(WDL_PATH) \
     38 -I$(SWELL_PATH) \
     39 -I$(IPLUG_PATH) \
     40 -I$(IPLUG_EXTRAS_PATH) \
     41 -I$(IPLUG_SYNTH_PATH) \
     42 -I$(IPLUG_FAUST_PATH) \
     43 -I$(IPLUG_WEB_PATH) \
     44 -I$(IGRAPHICS_PATH) \
     45 -I$(DRAWING_PATH) \
     46 -I$(CONTROLS_PATH) \
     47 -I$(PLATFORMS_PATH) \
     48 -I$(IGRAPHICS_EXTRAS_PATH) \
     49 -I$(NANOVG_PATH) \
     50 -I$(NANOSVG_PATH) \
     51 -I$(STB_PATH) \
     52 -I$(IMGUI_PATH) \
     53 -I$(IMGUI_PATH)/backends \
     54 -I$(YOGA_PATH) \
     55 -I$(YOGA_PATH)/yoga
     56 
     57 #every cpp file that is needed for both WASM modules
     58 SRC = $(IPLUG_SRC)
     59 
     60 #every cpp file that is needed for the WAM audio processor WASM module running in the audio worklet
     61 WAM_SRC = $(IPLUG_WEB_PATH)/IPlugWAM.cpp \
     62 	$(WAM_SDK_PATH)/processor.cpp \
     63 	$(IPLUG_PATH)/IPlugProcessor.cpp
     64 
     65 #every cpp file that is needed for the "WEB" graphics WASM module
     66 WEB_SRC = $(IGRAPHICS_SRC) \
     67 $(IPLUG_WEB_PATH)/IPlugWeb.cpp \
     68 $(IGRAPHICS_PATH)/IGraphicsEditorDelegate.cpp
     69 
     70 NANOVG_LDFLAGS = -s USE_WEBGL2=0 -s FULL_ES3=1
     71 
     72 IMGUI_LDFLAGS = -s BINARYEN_TRAP_MODE=clamp 
     73 
     74 # CFLAGS for both WAM and WEB targets
     75 CFLAGS = $(INCLUDE_PATHS) \
     76 -std=c++17  \
     77 -Wno-bitwise-op-parentheses \
     78 -DWDL_NO_DEFINE_MINMAX \
     79 -DNDEBUG=1
     80 
     81 WAM_CFLAGS = -DWAM_API \
     82 -DIPLUG_DSP=1 \
     83 -DNO_IGRAPHICS \
     84 -DSAMPLE_TYPE_FLOAT
     85 
     86 WEB_CFLAGS = -DWEB_API \
     87 -DIPLUG_EDITOR=1
     88 
     89 WAM_EXPORTS = "[\
     90   '_createModule','_wam_init','_wam_terminate','_wam_resize', \
     91   '_wam_onprocess', '_wam_onmidi', '_wam_onsysex', '_wam_onparam', \
     92   '_wam_onmessageN', '_wam_onmessageS', '_wam_onmessageA', '_wam_onpatch' \
     93   ]"
     94 
     95 WEB_EXPORTS = "['_main', '_iplug_fsready', '_iplug_syncfs']"
     96 
     97 # LDFLAGS for both WAM and WEB targets
     98 LDFLAGS = -s ALLOW_MEMORY_GROWTH=1 --bind
     99 
    100 # We can't compile the WASM module synchronously on main thread (.wasm over 4k in size requires async compile on chrome) https://developers.google.com/web/updates/2018/04/loading-wasm
    101 # and you can't compile asynchronously in AudioWorklet scope
    102 # The following settings mean the WASM is delivered as BASE64 and included in the MyPluginName-wam.js file.
    103 WAM_LDFLAGS = -s EXPORTED_RUNTIME_METHODS="['ccall', 'cwrap', 'setValue', 'UTF8ToString']" \
    104 -s BINARYEN_ASYNC_COMPILATION=0 \
    105 -s SINGLE_FILE=1
    106 #-s ENVIRONMENT=worker
    107 
    108 WEB_LDFLAGS = -s EXPORTED_FUNCTIONS=$(WEB_EXPORTS) \
    109 -s EXPORTED_RUNTIME_METHODS="['UTF8ToString']" \
    110 -s BINARYEN_ASYNC_COMPILATION=1 \
    111 -s FORCE_FILESYSTEM=1 \
    112 -s ENVIRONMENT=web \
    113 -lidbfs.js
    114