diff --git a/CMakeLists.txt b/CMakeLists.txt index df850c42b..41188fd9e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -122,6 +122,7 @@ option(WITH_DEMOS "Install demo songs" ON) option(WITH_INSTRUMENTS "Install instruments" ON) option(WITH_WAVETABLES "Install wavetables" ON) option(SHOW_OPEN_ASSETS_MENU_ENTRY "Show option to open built-in assets directory (on supported platforms)" OFF) +option(CONSOLE_SUBSYSTEM "Build Furnace with Console subsystem on Windows" OFF) if (APPLE) option(FORCE_APPLE_BIN "Force enable binary installation to /bin" OFF) else() @@ -1128,9 +1129,13 @@ if (NOT ANDROID OR TERMUX) endif() endif() +if (WIN32 AND CONSOLE_SUBSYSTEM) + list(APPEND DEPENDENCIES_DEFINES "TA_SUBSYSTEM_CONSOLE") +endif() + if(ANDROID AND NOT TERMUX) add_library(furnace SHARED ${USED_SOURCES}) -elseif(WIN32) +elseif(WIN32 AND NOT CONSOLE_SUBSYSTEM) add_executable(furnace WIN32 ${USED_SOURCES}) else() add_executable(furnace ${USED_SOURCES}) diff --git a/src/gui/gui.h b/src/gui/gui.h index 07938ba54..3b050e066 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -2665,6 +2665,7 @@ class FurnaceGUI { void drawMacros(std::vector& macros, FurnaceGUIMacroEditState& state); void alterSampleMap(int column, int val); + void insTabFM(DivInstrument* ins); void insTabSample(DivInstrument* ins); void drawOrderButtons(); diff --git a/src/main.cpp b/src/main.cpp index 06183444e..f635955ed 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -451,12 +451,13 @@ int main(int argc, char** argv) { // Windows console thing - thanks dj.tuBIG/MaliceX #ifdef _WIN32 - +#ifndef TA_SUBSYSTEM_CONSOLE if (AttachConsole(ATTACH_PARENT_PROCESS)) { freopen("CONOUT$", "w", stdout); freopen("CONOUT$", "w", stderr); freopen("CONIN$", "r", stdin); } +#endif #endif srand(time(NULL));