aboutsummaryrefslogtreecommitdiff
path: root/Src/external_dependencies/openmpt-trunk/build/make
diff options
context:
space:
mode:
authorJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
committerJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
commit20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch)
tree12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/external_dependencies/openmpt-trunk/build/make
parent537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff)
downloadwinamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz
Initial community commit
Diffstat (limited to 'Src/external_dependencies/openmpt-trunk/build/make')
-rw-r--r--Src/external_dependencies/openmpt-trunk/build/make/config-afl.mk48
-rw-r--r--Src/external_dependencies/openmpt-trunk/build/make/config-clang.mk42
-rw-r--r--Src/external_dependencies/openmpt-trunk/build/make/config-defaults.mk69
-rw-r--r--Src/external_dependencies/openmpt-trunk/build/make/config-djgpp.mk80
-rw-r--r--Src/external_dependencies/openmpt-trunk/build/make/config-emscripten.mk160
-rw-r--r--Src/external_dependencies/openmpt-trunk/build/make/config-gcc.mk43
-rw-r--r--Src/external_dependencies/openmpt-trunk/build/make/config-generic.mk26
-rw-r--r--Src/external_dependencies/openmpt-trunk/build/make/config-haiku.mk4
-rw-r--r--Src/external_dependencies/openmpt-trunk/build/make/config-macosx.mk4
-rw-r--r--Src/external_dependencies/openmpt-trunk/build/make/config-mingw-w64.mk118
-rw-r--r--Src/external_dependencies/openmpt-trunk/build/make/config-mingw-win9x.mk61
-rw-r--r--Src/external_dependencies/openmpt-trunk/build/make/config-mingw64-win32.mk47
-rw-r--r--Src/external_dependencies/openmpt-trunk/build/make/config-mingw64-win64.mk47
-rw-r--r--Src/external_dependencies/openmpt-trunk/build/make/config-mingw64-winrt-amd64.mk49
-rw-r--r--Src/external_dependencies/openmpt-trunk/build/make/config-mingw64-winrt-x86.mk49
-rw-r--r--Src/external_dependencies/openmpt-trunk/build/make/config-standard.mk24
-rw-r--r--Src/external_dependencies/openmpt-trunk/build/make/test-pre.js9
-rw-r--r--Src/external_dependencies/openmpt-trunk/build/make/warnings-clang.mk32
-rw-r--r--Src/external_dependencies/openmpt-trunk/build/make/warnings-gcc.mk27
19 files changed, 939 insertions, 0 deletions
diff --git a/Src/external_dependencies/openmpt-trunk/build/make/config-afl.mk b/Src/external_dependencies/openmpt-trunk/build/make/config-afl.mk
new file mode 100644
index 00000000..7125dd0e
--- /dev/null
+++ b/Src/external_dependencies/openmpt-trunk/build/make/config-afl.mk
@@ -0,0 +1,48 @@
+
+CC = contrib/fuzzing/afl/afl-clang-lto
+CXX = contrib/fuzzing/afl/afl-clang-lto++
+LD = contrib/fuzzing/afl/afl-clang-lto++
+AR = ar
+
+ifneq ($(STDCXX),)
+CXXFLAGS_STDCXX = -std=$(STDCXX)
+else
+ifeq ($(shell printf '\n' > bin/empty.cpp ; if $(CXX) -std=c++17 -c bin/empty.cpp -o bin/empty.out > /dev/null 2>&1 ; then echo 'c++17' ; fi ), c++17)
+CXXFLAGS_STDCXX = -std=c++17
+endif
+endif
+CFLAGS_STDC = -std=c99
+CXXFLAGS += $(CXXFLAGS_STDCXX)
+CFLAGS += $(CFLAGS_STDC)
+
+DYNLINK=0
+SHARED_LIB=0
+STATIC_LIB=1
+
+CPPFLAGS +=
+CXXFLAGS += -fPIC -fno-strict-aliasing
+CFLAGS += -fPIC -fno-strict-aliasing
+LDFLAGS +=
+LDLIBS += -lm
+ARFLAGS := rcs
+
+CXXFLAGS_WARNINGS += -Wmissing-declarations
+CFLAGS_WARNINGS += -Wmissing-prototypes
+
+ifeq ($(CHECKED_ADDRESS),1)
+CXXFLAGS += -fsanitize=address
+CFLAGS += -fsanitize=address
+endif
+
+ifeq ($(CHECKED_UNDEFINED),1)
+CXXFLAGS += -fsanitize=undefined
+CFLAGS += -fsanitize=undefined
+endif
+
+include build/make/warnings-clang.mk
+
+EXESUFFIX=
+
+FUZZ=1
+CPPFLAGS += -DMPT_BUILD_FUZZER -DMPT_BUILD_FATAL_ASSERTS
+
diff --git a/Src/external_dependencies/openmpt-trunk/build/make/config-clang.mk b/Src/external_dependencies/openmpt-trunk/build/make/config-clang.mk
new file mode 100644
index 00000000..59981905
--- /dev/null
+++ b/Src/external_dependencies/openmpt-trunk/build/make/config-clang.mk
@@ -0,0 +1,42 @@
+
+CC = $(TOOLCHAIN_PREFIX)clang$(TOOLCHAIN_SUFFIX)
+CXX = $(TOOLCHAIN_PREFIX)clang++$(TOOLCHAIN_SUFFIX)
+LD = $(TOOLCHAIN_PREFIX)clang++$(TOOLCHAIN_SUFFIX)
+AR = $(TOOLCHAIN_PREFIX)ar$(TOOLCHAIN_SUFFIX)
+
+ifneq ($(STDCXX),)
+CXXFLAGS_STDCXX = -std=$(STDCXX)
+else
+ifeq ($(shell printf '\n' > bin/empty.cpp ; if $(CXX) -std=c++17 -c bin/empty.cpp -o bin/empty.out > /dev/null 2>&1 ; then echo 'c++17' ; fi ), c++17)
+CXXFLAGS_STDCXX = -std=c++17
+endif
+endif
+CFLAGS_STDC = -std=c99
+CXXFLAGS += $(CXXFLAGS_STDCXX)
+CFLAGS += $(CFLAGS_STDC)
+
+CPPFLAGS +=
+CXXFLAGS += -fPIC
+CFLAGS += -fPIC
+LDFLAGS +=
+LDLIBS += -lm
+ARFLAGS := rcs
+
+ifeq ($(OPTIMIZE_LTO),1)
+CXXFLAGS += -flto=thin
+CFLAGS += -flto=thin
+endif
+
+ifeq ($(CHECKED_ADDRESS),1)
+CXXFLAGS += -fsanitize=address
+CFLAGS += -fsanitize=address
+endif
+
+ifeq ($(CHECKED_UNDEFINED),1)
+CXXFLAGS += -fsanitize=undefined
+CFLAGS += -fsanitize=undefined
+endif
+
+include build/make/warnings-clang.mk
+
+EXESUFFIX=
diff --git a/Src/external_dependencies/openmpt-trunk/build/make/config-defaults.mk b/Src/external_dependencies/openmpt-trunk/build/make/config-defaults.mk
new file mode 100644
index 00000000..bc765dfe
--- /dev/null
+++ b/Src/external_dependencies/openmpt-trunk/build/make/config-defaults.mk
@@ -0,0 +1,69 @@
+
+ifeq ($(HOST),unix)
+
+ifeq ($(HOST_FLAVOUR),MACOSX)
+
+NO_PULSEAUDIO?=1
+include build/make/config-clang.mk
+# Mac OS X overrides
+DYNLINK=0
+SHARED_SONAME=0
+
+else ifeq ($(HOST_FLAVOUR),MSYS2)
+
+ifeq ($(MSYSTEM),MINGW64)
+WINDOWS_ARCH=amd64
+include build/make/config-mingw-w64.mk
+else ifeq ($(MSYSTEM),MINGW32)
+WINDOWS_ARCH=x86
+include build/make/config-mingw-w64.mk
+else ifeq ($(MSYSTEM),UCRT64)
+WINDOWS_ARCH=amd64
+include build/make/config-mingw-w64.mk
+else ifeq ($(MSYSTEM),CLANG64)
+WINDOWS_ARCH=amd64
+MINGW_COMPILER=clang
+include build/make/config-mingw-w64.mk
+else
+WINDOWS_ARCH=x86
+include build/make/config-mingw-w64.mk
+endif
+
+else ifeq ($(HOST_FLAVOUR),LINUX)
+
+include build/make/config-gcc.mk
+
+else ifeq ($(HOST_FLAVOUR),FREEBSD)
+
+include build/make/config-clang.mk
+NO_LTDL?=1
+NO_PORTAUDIOCPP?=1
+
+else ifeq ($(HOST_FLAVOUR),OPENBSD)
+
+NO_PORTAUDIOCPP?=1
+NO_PULSEAUDIO?=1
+include build/make/config-clang.mk
+
+else ifeq ($(HOST_FLAVOUR),HAIKU)
+
+# In Haiku x86 32bit (but not 64bit),
+# modern compilers need a -x86 suffix.
+UNAME_P:=$(shell uname -p)
+ifeq ($(UNAME_P),x86)
+TOOLCHAIN_SUFFIX=-x86
+endif
+include build/make/config-gcc.mk
+
+else
+
+include build/make/config-generic.mk
+
+endif
+
+else
+
+include build/make/config-generic.mk
+
+endif
+
diff --git a/Src/external_dependencies/openmpt-trunk/build/make/config-djgpp.mk b/Src/external_dependencies/openmpt-trunk/build/make/config-djgpp.mk
new file mode 100644
index 00000000..fd32d405
--- /dev/null
+++ b/Src/external_dependencies/openmpt-trunk/build/make/config-djgpp.mk
@@ -0,0 +1,80 @@
+
+CC = i386-pc-msdosdjgpp-gcc
+CXX = i386-pc-msdosdjgpp-g++
+LD = i386-pc-msdosdjgpp-g++
+AR = i386-pc-msdosdjgpp-ar
+
+# Note that we are using GNU extensions instead of 100% standards-compliant
+# mode, because otherwise DJGPP-specific headers/functions are unavailable.
+CXXFLAGS_STDCXX = -std=gnu++17
+CFLAGS_STDC = -std=gnu99
+CXXFLAGS += $(CXXFLAGS_STDCXX)
+CFLAGS += $(CFLAGS_STDC)
+
+CPPFLAGS +=
+CXXFLAGS += -march=i386 -m80387 -mtune=pentium -ffast-math
+CFLAGS += -march=i386 -m80387 -mtune=pentium -ffast-math
+LDFLAGS +=
+LDLIBS += -lm
+ARFLAGS := rcs
+
+include build/make/warnings-gcc.mk
+
+EXESUFFIX=.exe
+
+DYNLINK=0
+SHARED_LIB=0
+STATIC_LIB=1
+SHARED_SONAME=0
+
+DEBUG=0
+OPTIMIZE=0
+OPTIMIZE_SIZE=1
+
+IS_CROSS=1
+
+# generates warnings
+MPT_COMPILER_NOVISIBILITY=1
+
+# causes crashes on process shutdown,
+# makes memory locking difficult
+MPT_COMPILER_NOGCSECTIONS=1
+
+ifeq ($(ALLOW_LGPL),1)
+LOCAL_ZLIB=1
+LOCAL_MPG123=1
+LOCAL_OGG=1
+LOCAL_VORBIS=1
+else
+NO_ZLIB=1
+NO_MPG123=1
+NO_OGG=1
+NO_VORBIS=1
+NO_VORBISFILE=1
+endif
+
+NO_LTDL=1
+NO_DL=1
+NO_PORTAUDIO=1
+NO_PORTAUDIOCPP=1
+NO_PULSEAUDIO=1
+NO_SDL=1
+NO_SDL2=1
+NO_SNDFILE=1
+NO_FLAC=1
+
+ifeq ($(BUNDLED_ALLEGRO42),1)
+
+CPPFLAGS_ALLEGRO42 := -Iinclude/allegro42/include -DALLEGRO_HAVE_STDINT_H -DLONG_LONG="long long"
+LDFLAGS_ALLEGRO42 :=
+LDLIBS_ALLEGRO42 := include/allegro42/lib/djgpp/liballeg.a
+
+include/allegro42/lib/djgpp/liballeg.a:
+ +cd include/allegro42 && ./xmake.sh clean
+ +cd include/allegro42 && ./xmake.sh lib
+
+bin/openmpt123$(EXESUFFIX): include/allegro42/lib/djgpp/liballeg.a
+
+MISC_OUTPUTS += include/allegro42/lib/djgpp/liballeg.a
+
+endif
diff --git a/Src/external_dependencies/openmpt-trunk/build/make/config-emscripten.mk b/Src/external_dependencies/openmpt-trunk/build/make/config-emscripten.mk
new file mode 100644
index 00000000..4d2e34db
--- /dev/null
+++ b/Src/external_dependencies/openmpt-trunk/build/make/config-emscripten.mk
@@ -0,0 +1,160 @@
+
+CC = emcc -c
+CXX = em++ -c
+LD = em++
+AR = emar
+LINK.cc = em++ $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)
+
+EMSCRIPTEN_TARGET?=default
+EMSCRIPTEN_THREADS?=0
+EMSCRIPTEN_PORTS?=0
+
+ifneq ($(STDCXX),)
+CXXFLAGS_STDCXX = -std=$(STDCXX)
+else
+ifeq ($(shell printf '\n' > bin/empty.cpp ; if $(CXX) -std=c++17 -c bin/empty.cpp -o bin/empty.out > /dev/null 2>&1 ; then echo 'c++17' ; fi ), c++17)
+CXXFLAGS_STDCXX = -std=c++17
+endif
+endif
+CFLAGS_STDC = -std=c99
+CXXFLAGS += $(CXXFLAGS_STDCXX)
+CFLAGS += $(CFLAGS_STDC)
+
+CPPFLAGS +=
+CXXFLAGS += -fPIC
+CFLAGS += -fPIC
+LDFLAGS +=
+LDLIBS +=
+ARFLAGS := rcs
+
+ifeq ($(EMSCRIPTEN_THREADS),1)
+CXXFLAGS += -pthread
+CFLAGS += -pthread
+LDFLAGS += -pthread
+endif
+
+ifeq ($(EMSCRIPTEN_PORTS),1)
+CXXFLAGS += -s USE_ZLIB=1 -sUSE_MPG123=1 -sUSE_OGG=1 -sUSE_VORBIS=1 -DMPT_WITH_ZLIB -DMPT_WITH_MPG123 -DMPT_WITH_VORBIS -DMPT_WITH_VORBISFI
+CFLAGS += -s USE_ZLIB=1 -sUSE_MPG123=1 -sUSE_OGG=1 -sUSE_VORBIS=1 -DMPT_WITH_ZLIB -DMPT_WITH_MPG123 -DMPT_WITH_VORBIS -DMPT_WITH_VORBISFI
+LDFLAGS += -s USE_ZLIB=1 -sUSE_MPG123=1 -sUSE_OGG=1 -sUSE_VORBIS=1
+NO_MINIZ=1
+NO_MINIMP3=1
+NO_STBVORBIS=1
+endif
+
+CXXFLAGS += -Oz
+CFLAGS += -Oz
+LDFLAGS += -Oz
+
+# Enable LTO as recommended by Emscripten
+#CXXFLAGS += -flto=thin
+#CFLAGS += -flto=thin
+#LDFLAGS += -flto=thin -Wl,--thinlto-jobs=all
+# As per recommendation in <https://github.com/emscripten-core/emscripten/issues/15638#issuecomment-982772770>,
+# thinLTO is not as well tested as full LTO. Stick to full LTO for now.
+CXXFLAGS += -flto
+CFLAGS += -flto
+LDFLAGS += -flto
+
+ifeq ($(EMSCRIPTEN_TARGET),default)
+# emits whatever is emscripten's default, currently (1.38.8) this is the same as "wasm" below.
+CPPFLAGS += -DMPT_BUILD_WASM
+CXXFLAGS +=
+CFLAGS +=
+LDFLAGS +=
+
+LDFLAGS += -s ALLOW_MEMORY_GROWTH=1
+
+else ifeq ($(EMSCRIPTEN_TARGET),all)
+# emits native wasm AND javascript with full wasm optimizations.
+CPPFLAGS += -DMPT_BUILD_WASM
+CXXFLAGS +=
+CFLAGS +=
+LDFLAGS += -s WASM=2 -s LEGACY_VM_SUPPORT=1 -Wno-transpile
+
+LDFLAGS += -s ALLOW_MEMORY_GROWTH=1
+
+else ifeq ($(EMSCRIPTEN_TARGET),audioworkletprocessor)
+# emits an es6 module in a single file suitable for use in an AudioWorkletProcessor
+CPPFLAGS += -DMPT_BUILD_WASM -DMPT_BUILD_AUDIOWORKLETPROCESSOR
+CXXFLAGS +=
+CFLAGS +=
+LDFLAGS += -s WASM=1 -s WASM_ASYNC_COMPILATION=0 -s MODULARIZE=1 -s EXPORT_ES6=1 -s SINGLE_FILE=1
+
+LDFLAGS += -s ALLOW_MEMORY_GROWTH=1
+
+else ifeq ($(EMSCRIPTEN_TARGET),wasm)
+# emits native wasm.
+CPPFLAGS += -DMPT_BUILD_WASM
+CXXFLAGS +=
+CFLAGS +=
+LDFLAGS += -s WASM=1
+
+LDFLAGS += -s ALLOW_MEMORY_GROWTH=1
+
+else ifeq ($(EMSCRIPTEN_TARGET),js)
+# emits only plain javascript with plain javascript focused optimizations.
+CPPFLAGS += -DMPT_BUILD_ASMJS
+CXXFLAGS +=
+CFLAGS +=
+LDFLAGS += -s WASM=0 -s LEGACY_VM_SUPPORT=1 -Wno-transpile
+
+LDFLAGS += -s ALLOW_MEMORY_GROWTH=1
+
+endif
+
+CXXFLAGS += -s DISABLE_EXCEPTION_CATCHING=0
+CFLAGS += -s DISABLE_EXCEPTION_CATCHING=0 -fno-strict-aliasing
+LDFLAGS += -s DISABLE_EXCEPTION_CATCHING=0 -s ERROR_ON_UNDEFINED_SYMBOLS=1 -s ERROR_ON_MISSING_LIBRARIES=1 -s EXPORT_NAME="'libopenmpt'"
+
+include build/make/warnings-clang.mk
+
+REQUIRES_RUNPREFIX=1
+
+EXESUFFIX=.js
+SOSUFFIX=.js
+RUNPREFIX=node
+TEST_LDFLAGS= --pre-js build/make/test-pre.js -lnodefs.js
+
+ifeq ($(EMSCRIPTEN_THREADS),1)
+RUNPREFIX+=--experimental-wasm-threads --experimental-wasm-bulk-memory
+endif
+
+DYNLINK=0
+SHARED_LIB=1
+STATIC_LIB=0
+EXAMPLES=1
+OPENMPT123=0
+SHARED_SONAME=0
+NO_SHARED_LINKER_FLAG=1
+
+# Disable the generic compiler optimization flags as emscripten is sufficiently different.
+# Optimization flags are hard-coded for emscripten in this file.
+DEBUG=0
+OPTIMIZE=0
+OPTIMIZE_SIZE=0
+
+IS_CROSS=1
+
+ifeq ($(ALLOW_LGPL),1)
+LOCAL_ZLIB=1
+LOCAL_MPG123=1
+LOCAL_OGG=1
+LOCAL_VORBIS=1
+else
+NO_ZLIB=1
+NO_MPG123=1
+NO_OGG=1
+NO_VORBIS=1
+NO_VORBISFILE=1
+endif
+NO_LTDL=1
+NO_DL=1
+NO_PORTAUDIO=1
+NO_PORTAUDIOCPP=1
+NO_PULSEAUDIO=1
+NO_SDL=1
+NO_SDL2=1
+NO_FLAC=1
+NO_SNDFILE=1
+
diff --git a/Src/external_dependencies/openmpt-trunk/build/make/config-gcc.mk b/Src/external_dependencies/openmpt-trunk/build/make/config-gcc.mk
new file mode 100644
index 00000000..608b3bdb
--- /dev/null
+++ b/Src/external_dependencies/openmpt-trunk/build/make/config-gcc.mk
@@ -0,0 +1,43 @@
+
+CC = $(TOOLCHAIN_PREFIX)gcc$(TOOLCHAIN_SUFFIX)
+CXX = $(TOOLCHAIN_PREFIX)g++$(TOOLCHAIN_SUFFIX)
+LD = $(TOOLCHAIN_PREFIX)g++($TOOLCHAIN_SUFFIX)
+AR = $(TOOLCHAIN_PREFIX)ar$(TOOLCHAIN_SUFFIX)
+
+ifneq ($(STDCXX),)
+CXXFLAGS_STDCXX = -std=$(STDCXX)
+else
+ifeq ($(shell printf '\n' > bin/empty.cpp ; if $(CXX) -std=c++17 -c bin/empty.cpp -o bin/empty.out > /dev/null 2>&1 ; then echo 'c++17' ; fi ), c++17)
+CXXFLAGS_STDCXX = -std=c++17
+endif
+endif
+CFLAGS_STDC = -std=c99
+CXXFLAGS += $(CXXFLAGS_STDCXX)
+CFLAGS += $(CFLAGS_STDC)
+
+CPPFLAGS +=
+CXXFLAGS += -fPIC
+CFLAGS += -fPIC
+LDFLAGS +=
+LDLIBS += -lm
+ARFLAGS := rcs
+
+ifeq ($(OPTIMIZE_LTO),1)
+CXXFLAGS += -flto
+CFLAGS += -flto
+endif
+
+ifeq ($(CHECKED_ADDRESS),1)
+CXXFLAGS += -fsanitize=address
+CFLAGS += -fsanitize=address
+endif
+
+ifeq ($(CHECKED_UNDEFINED),1)
+CXXFLAGS += -fsanitize=undefined
+CFLAGS += -fsanitize=undefined
+endif
+
+include build/make/warnings-gcc.mk
+
+EXESUFFIX=
+
diff --git a/Src/external_dependencies/openmpt-trunk/build/make/config-generic.mk b/Src/external_dependencies/openmpt-trunk/build/make/config-generic.mk
new file mode 100644
index 00000000..61e10b1b
--- /dev/null
+++ b/Src/external_dependencies/openmpt-trunk/build/make/config-generic.mk
@@ -0,0 +1,26 @@
+
+$(warning warning: CONFIG=generic is deprecated. Use CONFIG=standard instead.)
+
+CC ?= cc
+CXX ?= c++
+LD ?= c++
+AR = ar
+
+CXXFLAGS_STDCXX = -std=c++17
+CFLAGS_STDC = -std=c99
+CXXFLAGS += $(CXXFLAGS_STDCXX)
+CFLAGS += $(CFLAGS_STDC)
+
+CPPFLAGS +=
+CXXFLAGS +=
+CFLAGS +=
+LDFLAGS +=
+LDLIBS +=
+ARFLAGS := rcs
+
+MPT_COMPILER_GENERIC=1
+SHARED_LIB=0
+DYNLINK=0
+
+EXESUFFIX=
+
diff --git a/Src/external_dependencies/openmpt-trunk/build/make/config-haiku.mk b/Src/external_dependencies/openmpt-trunk/build/make/config-haiku.mk
new file mode 100644
index 00000000..191dbb39
--- /dev/null
+++ b/Src/external_dependencies/openmpt-trunk/build/make/config-haiku.mk
@@ -0,0 +1,4 @@
+
+$(warning warning: CONFIG=haiku is deprecated. The OS is auto-detected.)
+
+include config-defaults.mk
diff --git a/Src/external_dependencies/openmpt-trunk/build/make/config-macosx.mk b/Src/external_dependencies/openmpt-trunk/build/make/config-macosx.mk
new file mode 100644
index 00000000..278b395e
--- /dev/null
+++ b/Src/external_dependencies/openmpt-trunk/build/make/config-macosx.mk
@@ -0,0 +1,4 @@
+
+$(warning warning: CONFIG=macosx is deprecated. The OS is auto-detected.)
+
+include config-defaults.mk
diff --git a/Src/external_dependencies/openmpt-trunk/build/make/config-mingw-w64.mk b/Src/external_dependencies/openmpt-trunk/build/make/config-mingw-w64.mk
new file mode 100644
index 00000000..e0ab794c
--- /dev/null
+++ b/Src/external_dependencies/openmpt-trunk/build/make/config-mingw-w64.mk
@@ -0,0 +1,118 @@
+
+ifeq ($(WINDOWS_ARCH),)
+MINGW_ARCH = i686
+else ifeq ($(WINDOWS_ARCH),x86)
+MINGW_ARCH = i686
+else ifeq ($(WINDOWS_ARCH),amd64)
+MINGW_ARCH = x86_64
+#else ifeq ($(WINDOWS_ARCH),arm)
+#MINGW_ARCH =
+#else ifeq ($(WINDOWS_ARCH),arm64)
+#MINGW_ARCH =
+else
+$(error unknown WINDOWS_ARCH)
+endif
+
+CC = $(MINGW_ARCH)-w64-mingw32-gcc$(MINGW_FLAVOUR)
+CXX = $(MINGW_ARCH)-w64-mingw32-g++$(MINGW_FLAVOUR)
+LD = $(MINGW_ARCH)-w64-mingw32-g++$(MINGW_FLAVOUR)
+AR = $(MINGW_ARCH)-w64-mingw32-ar$(MINGW_FLAVOUR)
+
+CXXFLAGS_STDCXX = -std=c++17 -fexceptions -frtti
+CFLAGS_STDC = -std=c99
+CXXFLAGS += $(CXXFLAGS_STDCXX)
+CFLAGS += $(CFLAGS_STDC)
+
+CPPFLAGS +=
+CXXFLAGS += -municode -mconsole -mthreads
+CFLAGS += -municode -mconsole -mthreads
+LDFLAGS +=
+LDLIBS += -lm -lole32 -lrpcrt4 -lwinmm
+ARFLAGS := rcs
+
+PC_LIBS_PRIVATE += -lole32 -lrpcrt4
+
+ifeq ($(WINDOWS_FAMILY),)
+# nothing
+else ifeq ($(WINDOWS_FAMILY),desktop-app)
+# nothing
+else ifeq ($(WINDOWS_FAMILY),app)
+CPPFLAGS += -DWINAPI_FAMILY=2
+OPENMPT123=0
+else ifeq ($(WINDOWS_FAMILY),phone-app)
+CPPFLAGS += -DWINAPI_FAMILY=3
+OPENMPT123=0
+else ifeq ($(WINDOWS_FAMILY),pc-app)
+CPPFLAGS += -DWINAPI_FAMILY=2
+OPENMPT123=0
+else
+$(error unknown WINDOWS_FAMILY)
+endif
+
+ifeq ($(WINDOWS_VERSION),)
+# nothing
+else ifeq ($(WINDOWS_VERSION),win95)
+CPPFLAGS += -D_WIN32_WINDOWS=0x0400
+else ifeq ($(WINDOWS_VERSION),win98)
+CPPFLAGS += -D_WIN32_WINDOWS=0x0410
+else ifeq ($(WINDOWS_VERSION),winme)
+CPPFLAGS += -D_WIN32_WINDOWS=0x0490
+else ifeq ($(WINDOWS_VERSION),winnt4)
+CPPFLAGS += -D_WIN32_WINNT=0x0400
+else ifeq ($(WINDOWS_VERSION),win2000)
+CPPFLAGS += -D_WIN32_WINNT=0x0500
+else ifeq ($(WINDOWS_VERSION),winxp)
+CPPFLAGS += -D_WIN32_WINNT=0x0501
+else ifeq ($(WINDOWS_VERSION),winxp64)
+CPPFLAGS += -D_WIN32_WINNT=0x0502
+else ifeq ($(WINDOWS_VERSION),winvista)
+CPPFLAGS += -DNTDDI_VERSION=0x06000000
+else ifeq ($(WINDOWS_VERSION),win7)
+CPPFLAGS += -DNTDDI_VERSION=0x06010000
+else ifeq ($(WINDOWS_VERSION),win8)
+CPPFLAGS += -DNTDDI_VERSION=0x06020000
+else ifeq ($(WINDOWS_VERSION),win8.1)
+CPPFLAGS += -DNTDDI_VERSION=0x06030000
+else ifeq ($(WINDOWS_VERSION),win10)
+CPPFLAGS += -DNTDDI_VERSION=0x0A000000
+else
+$(error unknown WINDOWS_VERSION)
+endif
+
+ifeq ($(MINGW_COMPILER),clang)
+include build/make/warnings-clang.mk
+else
+include build/make/warnings-gcc.mk
+endif
+
+EXESUFFIX=.exe
+SOSUFFIX=.dll
+SOSUFFIXWINDOWS=1
+
+DYNLINK=0
+SHARED_LIB=1
+STATIC_LIB=0
+SHARED_SONAME=0
+
+ifeq ($(HOST_FLAVOUR),MSYS2)
+
+else
+
+IS_CROSS=1
+
+NO_ZLIB=1
+NO_LTDL=1
+NO_DL=1
+NO_MPG123=1
+NO_OGG=1
+NO_VORBIS=1
+NO_VORBISFILE=1
+NO_PORTAUDIO=1
+NO_PORTAUDIOCPP=1
+NO_PULSEAUDIO=1
+NO_SDL=1
+NO_SDL2=1
+NO_SNDFILE=1
+NO_FLAC=1
+
+endif
diff --git a/Src/external_dependencies/openmpt-trunk/build/make/config-mingw-win9x.mk b/Src/external_dependencies/openmpt-trunk/build/make/config-mingw-win9x.mk
new file mode 100644
index 00000000..2897ff1d
--- /dev/null
+++ b/Src/external_dependencies/openmpt-trunk/build/make/config-mingw-win9x.mk
@@ -0,0 +1,61 @@
+
+CC = mingw32-gcc$(MINGW_FLAVOUR)
+CXX = mingw32-g++$(MINGW_FLAVOUR)
+LD = mingw32-g++$(MINGW_FLAVOUR)
+AR = mingw32-gcc-ar$(MINGW_FLAVOUR)
+
+CXXFLAGS_STDCXX = -std=gnu++17
+CFLAGS_STDC = -std=gnu99
+CXXFLAGS += $(CXXFLAGS_STDCXX)
+CFLAGS += $(CFLAGS_STDC)
+
+CPPFLAGS += -DWIN32 -D_WIN32 -DWINVER=0x0410 -D_WIN32_WINDOWS=0x0410 -DMPT_BUILD_RETRO
+CXXFLAGS += -mconsole -mthreads
+CFLAGS += -mconsole -mthreads
+LDFLAGS +=
+LDLIBS += -lm -lole32 -lrpcrt4 -lwinmm
+ARFLAGS := rcs
+
+LDFLAGS += -static -static-libgcc -static-libstdc++
+
+#CXXFLAGS += -ffunction-sections -fdata-sections
+#CFLAGS += -ffunction-sections -fdata-sections
+#LDFLAGS += -Wl,--gc-sections
+
+CXXFLAGS += -march=i486 -m80387 -mtune=pentium
+CFLAGS += -march=i486 -m80387 -mtune=pentium
+
+PC_LIBS_PRIVATE += -lole32 -lrpcrt4
+
+include build/make/warnings-gcc.mk
+
+EXESUFFIX=.exe
+SOSUFFIX=.dll
+SOSUFFIXWINDOWS=1
+
+DYNLINK=0
+SHARED_LIB=1
+STATIC_LIB=0
+SHARED_SONAME=0
+
+FORCE_UNIX_STYLE_COMMANDS=1
+
+IN_OPENMPT=1
+XMP_OPENMPT=1
+
+IS_CROSS=1
+
+NO_ZLIB=1
+NO_LTDL=1
+NO_DL=1
+NO_MPG123=1
+NO_OGG=1
+NO_VORBIS=1
+NO_VORBISFILE=1
+NO_PORTAUDIO=1
+NO_PORTAUDIOCPP=1
+NO_PULSEAUDIO=1
+NO_SDL=1
+NO_SDL2=1
+NO_SNDFILE=1
+NO_FLAC=1
diff --git a/Src/external_dependencies/openmpt-trunk/build/make/config-mingw64-win32.mk b/Src/external_dependencies/openmpt-trunk/build/make/config-mingw64-win32.mk
new file mode 100644
index 00000000..d1c579ba
--- /dev/null
+++ b/Src/external_dependencies/openmpt-trunk/build/make/config-mingw64-win32.mk
@@ -0,0 +1,47 @@
+
+CC = i686-w64-mingw32-gcc$(MINGW_FLAVOUR)
+CXX = i686-w64-mingw32-g++$(MINGW_FLAVOUR)
+LD = i686-w64-mingw32-g++$(MINGW_FLAVOUR)
+AR = i686-w64-mingw32-ar$(MINGW_FLAVOUR)
+
+CXXFLAGS_STDCXX = -std=c++17
+CFLAGS_STDC = -std=c99
+CXXFLAGS += $(CXXFLAGS_STDCXX)
+CFLAGS += $(CFLAGS_STDC)
+
+CPPFLAGS += -DWIN32 -D_WIN32
+CXXFLAGS += -municode -mconsole -mthreads
+CFLAGS += -municode -mconsole -mthreads
+LDFLAGS +=
+LDLIBS += -lm -lole32 -lrpcrt4 -lwinmm
+ARFLAGS := rcs
+
+PC_LIBS_PRIVATE += -lole32 -lrpcrt4
+
+include build/make/warnings-gcc.mk
+
+EXESUFFIX=.exe
+SOSUFFIX=.dll
+SOSUFFIXWINDOWS=1
+
+DYNLINK=0
+SHARED_LIB=1
+STATIC_LIB=0
+SHARED_SONAME=0
+
+IS_CROSS=1
+
+NO_ZLIB=1
+NO_LTDL=1
+NO_DL=1
+NO_MPG123=1
+NO_OGG=1
+NO_VORBIS=1
+NO_VORBISFILE=1
+NO_PORTAUDIO=1
+NO_PORTAUDIOCPP=1
+NO_PULSEAUDIO=1
+NO_SDL=1
+NO_SDL2=1
+NO_SNDFILE=1
+NO_FLAC=1
diff --git a/Src/external_dependencies/openmpt-trunk/build/make/config-mingw64-win64.mk b/Src/external_dependencies/openmpt-trunk/build/make/config-mingw64-win64.mk
new file mode 100644
index 00000000..fc4f8eaf
--- /dev/null
+++ b/Src/external_dependencies/openmpt-trunk/build/make/config-mingw64-win64.mk
@@ -0,0 +1,47 @@
+
+CC = x86_64-w64-mingw32-gcc$(MINGW_FLAVOUR)
+CXX = x86_64-w64-mingw32-g++$(MINGW_FLAVOUR)
+LD = x86_64-w64-mingw32-g++$(MINGW_FLAVOUR)
+AR = x86_64-w64-mingw32-ar$(MINGW_FLAVOUR)
+
+CXXFLAGS_STDCXX = -std=c++17
+CFLAGS_STDC = -std=c99
+CXXFLAGS += $(CXXFLAGS_STDCXX)
+CFLAGS += $(CFLAGS_STDC)
+
+CPPFLAGS += -DWIN32 -D_WIN32 -DWIN64 -D_WIN64
+CXXFLAGS += -municode -mconsole -mthreads
+CFLAGS += -municode -mconsole -mthreads
+LDFLAGS +=
+LDLIBS += -lm -lole32 -lrpcrt4 -lwinmm
+ARFLAGS := rcs
+
+PC_LIBS_PRIVATE += -lole32 -lrpcrt4
+
+include build/make/warnings-gcc.mk
+
+EXESUFFIX=.exe
+SOSUFFIX=.dll
+SOSUFFIXWINDOWS=1
+
+DYNLINK=0
+SHARED_LIB=1
+STATIC_LIB=0
+SHARED_SONAME=0
+
+IS_CROSS=1
+
+NO_ZLIB=1
+NO_LTDL=1
+NO_DL=1
+NO_MPG123=1
+NO_OGG=1
+NO_VORBIS=1
+NO_VORBISFILE=1
+NO_PORTAUDIO=1
+NO_PORTAUDIOCPP=1
+NO_PULSEAUDIO=1
+NO_SDL=1
+NO_SDL2=1
+NO_SNDFILE=1
+NO_FLAC=1
diff --git a/Src/external_dependencies/openmpt-trunk/build/make/config-mingw64-winrt-amd64.mk b/Src/external_dependencies/openmpt-trunk/build/make/config-mingw64-winrt-amd64.mk
new file mode 100644
index 00000000..fdcd75a1
--- /dev/null
+++ b/Src/external_dependencies/openmpt-trunk/build/make/config-mingw64-winrt-amd64.mk
@@ -0,0 +1,49 @@
+
+CC = x86_64-w64-mingw32-gcc$(MINGW_FLAVOUR)
+CXX = x86_64-w64-mingw32-g++$(MINGW_FLAVOUR)
+LD = x86_64-w64-mingw32-g++$(MINGW_FLAVOUR)
+AR = x86_64-w64-mingw32-ar$(MINGW_FLAVOUR)
+
+CXXFLAGS_STDCXX = -std=c++17
+CFLAGS_STDC = -std=c99
+CXXFLAGS += $(CXXFLAGS_STDCXX)
+CFLAGS += $(CFLAGS_STDC)
+
+CPPFLAGS += -DWIN32 -D_WIN32 -DWIN64 -D_WIN64 -DWINAPI_FAMILY=0x2 -D_WIN32_WINNT=0x0602
+CXXFLAGS += -municode -mconsole -mthreads
+CFLAGS += -municode -mconsole -mthreads
+LDFLAGS +=
+LDLIBS += -lm -lole32 -lwinmm
+ARFLAGS := rcs
+
+PC_LIBS_PRIVATE += -lole32 -lrpcrt4
+
+include build/make/warnings-gcc.mk
+
+EXESUFFIX=.exe
+SOSUFFIX=.dll
+SOSUFFIXWINDOWS=1
+
+DYNLINK=0
+SHARED_LIB=1
+STATIC_LIB=0
+SHARED_SONAME=0
+
+IS_CROSS=1
+
+OPENMPT123=0
+
+NO_ZLIB=1
+NO_LTDL=1
+NO_DL=1
+NO_MPG123=1
+NO_OGG=1
+NO_VORBIS=1
+NO_VORBISFILE=1
+NO_PORTAUDIO=1
+NO_PORTAUDIOCPP=1
+NO_PULSEAUDIO=1
+NO_SDL=1
+NO_SDL2=1
+NO_SNDFILE=1
+NO_FLAC=1
diff --git a/Src/external_dependencies/openmpt-trunk/build/make/config-mingw64-winrt-x86.mk b/Src/external_dependencies/openmpt-trunk/build/make/config-mingw64-winrt-x86.mk
new file mode 100644
index 00000000..35093002
--- /dev/null
+++ b/Src/external_dependencies/openmpt-trunk/build/make/config-mingw64-winrt-x86.mk
@@ -0,0 +1,49 @@
+
+CC = i686-w64-mingw32-gcc$(MINGW_FLAVOUR)
+CXX = i686-w64-mingw32-g++$(MINGW_FLAVOUR)
+LD = i686-w64-mingw32-g++$(MINGW_FLAVOUR)
+AR = i686-w64-mingw32-ar$(MINGW_FLAVOUR)
+
+CXXFLAGS_STDCXX = -std=c++17
+CFLAGS_STDC = -std=c99
+CXXFLAGS += $(CXXFLAGS_STDCXX)
+CFLAGS += $(CFLAGS_STDC)
+
+CPPFLAGS += -DWIN32 -D_WIN32 -DWINAPI_FAMILY=0x2 -D_WIN32_WINNT=0x0602
+CXXFLAGS += -municode -mconsole -mthreads
+CFLAGS += -municode -mconsole -mthreads
+LDFLAGS +=
+LDLIBS += -lm -lole32 -lrpcrt4 -lwinmm
+ARFLAGS := rcs
+
+PC_LIBS_PRIVATE += -lole32 -lrpcrt4
+
+include build/make/warnings-gcc.mk
+
+EXESUFFIX=.exe
+SOSUFFIX=.dll
+SOSUFFIXWINDOWS=1
+
+DYNLINK=0
+SHARED_LIB=1
+STATIC_LIB=0
+SHARED_SONAME=0
+
+IS_CROSS=1
+
+OPENMPT123=0
+
+NO_ZLIB=1
+NO_LTDL=1
+NO_DL=1
+NO_MPG123=1
+NO_OGG=1
+NO_VORBIS=1
+NO_VORBISFILE=1
+NO_PORTAUDIO=1
+NO_PORTAUDIOCPP=1
+NO_PULSEAUDIO=1
+NO_SDL=1
+NO_SDL2=1
+NO_SNDFILE=1
+NO_FLAC=1
diff --git a/Src/external_dependencies/openmpt-trunk/build/make/config-standard.mk b/Src/external_dependencies/openmpt-trunk/build/make/config-standard.mk
new file mode 100644
index 00000000..d9757fae
--- /dev/null
+++ b/Src/external_dependencies/openmpt-trunk/build/make/config-standard.mk
@@ -0,0 +1,24 @@
+
+CC ?= cc
+CXX ?= c++
+LD ?= c++
+AR = ar
+
+CXXFLAGS_STDCXX = -std=c++17
+CFLAGS_STDC = -std=c99
+CXXFLAGS += $(CXXFLAGS_STDCXX)
+CFLAGS += $(CFLAGS_STDC)
+
+CPPFLAGS += -DMPT_COMPILER_GENERIC
+CXXFLAGS +=
+CFLAGS +=
+LDFLAGS +=
+LDLIBS +=
+ARFLAGS := rcs
+
+MPT_COMPILER_GENERIC=1
+SHARED_LIB=0
+DYNLINK=0
+
+EXESUFFIX=
+
diff --git a/Src/external_dependencies/openmpt-trunk/build/make/test-pre.js b/Src/external_dependencies/openmpt-trunk/build/make/test-pre.js
new file mode 100644
index 00000000..3acc7d25
--- /dev/null
+++ b/Src/external_dependencies/openmpt-trunk/build/make/test-pre.js
@@ -0,0 +1,9 @@
+
+var Module = {
+ 'preInit': function(text) {
+ FS.mkdir('/test');
+ FS.mount(NODEFS, {'root': '../test/'}, '/test');
+ FS.mkdir('/libopenmpt');
+ FS.mount(NODEFS, {'root': '../libopenmpt/'}, '/libopenmpt');
+ }
+};
diff --git a/Src/external_dependencies/openmpt-trunk/build/make/warnings-clang.mk b/Src/external_dependencies/openmpt-trunk/build/make/warnings-clang.mk
new file mode 100644
index 00000000..80cfbd08
--- /dev/null
+++ b/Src/external_dependencies/openmpt-trunk/build/make/warnings-clang.mk
@@ -0,0 +1,32 @@
+
+CXXFLAGS_WARNINGS += -Wcast-align -Wcast-qual -Wmissing-prototypes -Wshift-count-negative -Wshift-count-overflow -Wshift-op-parentheses -Wshift-overflow -Wshift-sign-overflow -Wundef
+CFLAGS_WARNINGS += -Wcast-align -Wcast-qual -Wmissing-prototypes -Wshift-count-negative -Wshift-count-overflow -Wshift-op-parentheses -Wshift-overflow -Wshift-sign-overflow -Wundef
+
+CXXFLAGS_WARNINGS += -Wdeprecated -Wextra-semi -Wframe-larger-than=16000 -Wglobal-constructors -Wimplicit-fallthrough -Wmissing-declarations -Wnon-virtual-dtor -Wreserved-id-macro
+
+#CXXFLAGS_WARNINGS += -Wfloat-equal
+#CXXFLAGS_WARNINGS += -Wdocumentation
+#CXXFLAGS_WARNINGS += -Wconversion
+#CXXFLAGS_WARNINGS += -Weverything -Wno-c++98-compat -Wno-c++98-compat-pedantic -Wno-c++98-c++11-c++14-compat -Wno-padded -Wno-weak-vtables -Wno-sign-conversion -Wno-shadow-field-in-constructor -Wno-conversion -Wno-switch-enum -Wno-old-style-cast
+
+ifeq ($(MODERN),1)
+LDFLAGS += -fuse-ld=lld
+ifeq ($(OPTIMIZE_LTO),1)
+LDFLAGS += -Wl,--thinlto-jobs=all
+endif
+CXXFLAGS_WARNINGS +=
+CFLAGS_WARNINGS += -Wframe-larger-than=4000
+LDFLAGS_WARNINGS += -Wl,-no-undefined -Wl,--detect-odr-violations
+# re-renable after 1.29 branch
+#CXXFLAGS_WARNINGS += -Wdouble-promotion
+#CFLAGS_WARNINGS += -Wdouble-promotion
+endif
+
+CFLAGS_SILENT += -Wno-\#warnings
+CFLAGS_SILENT += -Wno-cast-align
+CFLAGS_SILENT += -Wno-cast-qual
+CFLAGS_SILENT += -Wno-missing-prototypes
+CFLAGS_SILENT += -Wno-sign-compare
+CFLAGS_SILENT += -Wno-unused-function
+CFLAGS_SILENT += -Wno-unused-parameter
+CFLAGS_SILENT += -Wno-unused-variable
diff --git a/Src/external_dependencies/openmpt-trunk/build/make/warnings-gcc.mk b/Src/external_dependencies/openmpt-trunk/build/make/warnings-gcc.mk
new file mode 100644
index 00000000..2f686e6e
--- /dev/null
+++ b/Src/external_dependencies/openmpt-trunk/build/make/warnings-gcc.mk
@@ -0,0 +1,27 @@
+
+CXXFLAGS_WARNINGS += -Wcast-align -Wcast-qual -Wfloat-conversion -Wframe-larger-than=16000 -Winit-self -Wlogical-op -Wmissing-declarations -Wpointer-arith -Wstrict-aliasing -Wsuggest-override -Wundef
+CFLAGS_WARNINGS += -Wcast-align -Wcast-qual -Wfloat-conversion -Wlogical-op -Wundef
+
+CXXFLAGS_WARNINGS += -Wno-psabi
+
+ifeq ($(MODERN),1)
+LDFLAGS += -fuse-ld=gold
+CXXFLAGS_WARNINGS +=
+CFLAGS_WARNINGS += -Wframe-larger-than=4000
+#CXXFLAGS_WARNINGS += -Wstrict-aliasing -Wpointer-arith -Winit-self -Wshadow -Wswitch-enum -Wstrict-prototypes
+LDFLAGS_WARNINGS += -Wl,-no-undefined -Wl,--detect-odr-violations
+# re-renable after 1.29 branch
+#CXXFLAGS_WARNINGS += -Wdouble-promotion
+#CFLAGS_WARNINGS += -Wdouble-promotion
+endif
+
+CFLAGS_SILENT += -Wno-cast-qual
+CFLAGS_SILENT += -Wno-empty-body
+CFLAGS_SILENT += -Wno-float-conversion
+CFLAGS_SILENT += -Wno-implicit-fallthrough
+CFLAGS_SILENT += -Wno-old-style-declaration
+CFLAGS_SILENT += -Wno-sign-compare
+CFLAGS_SILENT += -Wno-type-limits
+CFLAGS_SILENT += -Wno-unused-but-set-variable
+CFLAGS_SILENT += -Wno-unused-function
+CFLAGS_SILENT += -Wno-unused-parameter