242 lines
7.4 KiB
Makefile
242 lines
7.4 KiB
Makefile
|
|
||
|
ifeq ($(MPT_PROGRESS_FILE),)
|
||
|
MPT_PROGRESS_FILE:=/dev/null
|
||
|
endif
|
||
|
|
||
|
ifneq ($(words $(MAKECMDGOALS)),1)
|
||
|
.DEFAULT_GOAL = all
|
||
|
%:
|
||
|
@$(MAKE) $@ --no-print-directory -rRf $(firstword $(MAKEFILE_LIST))
|
||
|
else
|
||
|
ifndef PROGRESS
|
||
|
T := $(shell $(MAKE) $(MAKECMDGOALS) --no-print-directory -nrRf $(firstword $(MAKEFILE_LIST)) PROGRESS="COUNTTHIS" | grep -c "COUNTTHIS")
|
||
|
N := x
|
||
|
C = $(words $N)$(eval N := x $N)
|
||
|
D = $(words $N)$(eval N := $N)
|
||
|
PROGRESS = @echo "`expr \( $C '-' 1 \) '*' 100 / $T`" >$(MPT_PROGRESS_FILE)
|
||
|
PROGRESS_ECHO = @echo "[`printf %3s \`expr \( $D '-' 1 \) '*' 100 / $T\``%]"
|
||
|
endif
|
||
|
|
||
|
PROGRESS_ECHO ?= echo
|
||
|
|
||
|
V?=2
|
||
|
INFO ?= @echo
|
||
|
SILENT ?= @
|
||
|
VERYSILENT ?= @
|
||
|
|
||
|
ifeq ($(V),6)
|
||
|
INFO = @true
|
||
|
SILENT =
|
||
|
VERYSILENT =
|
||
|
endif
|
||
|
|
||
|
ifeq ($(V),5)
|
||
|
INFO = @true
|
||
|
SILENT =
|
||
|
VERYSILENT =
|
||
|
endif
|
||
|
|
||
|
ifeq ($(V),4)
|
||
|
INFO = @true
|
||
|
SILENT =
|
||
|
VERYSILENT = @
|
||
|
endif
|
||
|
|
||
|
ifeq ($(V),3)
|
||
|
INFO = @$(PROGRESS_ECHO)
|
||
|
SILENT = @
|
||
|
VERYSILENT = @
|
||
|
endif
|
||
|
|
||
|
ifeq ($(V),2)
|
||
|
INFO = @$(PROGRESS_ECHO)
|
||
|
SILENT = @
|
||
|
VERYSILENT = @
|
||
|
endif
|
||
|
|
||
|
ifeq ($(V),1)
|
||
|
INFO = @true
|
||
|
SILENT = @
|
||
|
VERYSILENT = @
|
||
|
endif
|
||
|
|
||
|
ifeq ($(V),0)
|
||
|
INFO = @true
|
||
|
SILENT = @
|
||
|
VERYSILENT = @
|
||
|
endif
|
||
|
|
||
|
ifeq ($(MPT_ARCH_BITS),)
|
||
|
MPT_ARCH_TARGET:=
|
||
|
else
|
||
|
MPT_ARCH_TARGET:=-m$(MPT_ARCH_BITS)
|
||
|
endif
|
||
|
|
||
|
MPT_TARGET?=
|
||
|
|
||
|
MPT_TRY_DBUS?=1
|
||
|
MPT_TRY_PORTAUDIO?=1
|
||
|
MPT_TRY_PULSEAUDIO?=1
|
||
|
MPT_TRY_RTAUDIO?=1
|
||
|
|
||
|
CPPFLAGS += $(MPT_ARCH_TARGET) -Icommon -Isrc -Iinclude/nlohmann-json/include -Iinclude
|
||
|
CXXFLAGS += $(MPT_ARCH_TARGET) -std=gnu++17 -fpermissive -fPIC -fvisibility=hidden
|
||
|
CFLAGS += $(MPT_ARCH_TARGET) -std=c99 -fPIC -fvisibility=hidden
|
||
|
LDFLAGS += $(MPT_ARCH_TARGET)
|
||
|
LDLIBS += -lm -lpthread
|
||
|
ARFLAGS +=
|
||
|
|
||
|
CXXFLAGS += -Os -ffast-math
|
||
|
CFLAGS += -Os -ffast-math -fno-strict-aliasing
|
||
|
|
||
|
CXXFLAGS += -Wall -Wextra -Wundef -Wcast-qual -Wcast-align
|
||
|
CFLAGS += -Wall -Wextra -Wundef -Wcast-qual -Wcast-align
|
||
|
|
||
|
ifeq ($(shell command -v ccache 2>/dev/null 1>/dev/null && echo yes),yes)
|
||
|
CCACHE=ccache
|
||
|
else
|
||
|
CCACHE=
|
||
|
endif
|
||
|
|
||
|
ifeq ($(MPT_TRY_DBUS),2)
|
||
|
|
||
|
ifeq ($(shell $(MPT_TARGET)pkg-config --exists dbus-1 && echo yes),yes)
|
||
|
CPPFLAGS += $(shell $(MPT_TARGET)pkg-config --cflags-only-I dbus-1 ) -DMPT_WITH_DBUS
|
||
|
LDFLAGS += $(shell $(MPT_TARGET)pkg-config --libs-only-L dbus-1 ) $(shell $(MPT_TARGET)pkg-config --libs-only-other dbus-1 )
|
||
|
LDLIBS += $(shell $(MPT_TARGET)pkg-config --libs-only-l dbus-1 )
|
||
|
CPPFLAGS += -DMPT_WITH_RTKIT
|
||
|
RTKIT_C_SOURCES += include/rtkit/rtkit.c
|
||
|
else
|
||
|
$(error DBus not found.)
|
||
|
endif
|
||
|
|
||
|
else
|
||
|
ifeq ($(MPT_TRY_DBUS),1)
|
||
|
|
||
|
ifeq ($(shell $(MPT_TARGET)pkg-config --exists dbus-1 && echo yes),yes)
|
||
|
CPPFLAGS += $(shell $(MPT_TARGET)pkg-config --cflags-only-I dbus-1 ) -DMPT_WITH_DBUS
|
||
|
LDFLAGS += $(shell $(MPT_TARGET)pkg-config --libs-only-L dbus-1 ) $(shell $(MPT_TARGET)pkg-config --libs-only-other dbus-1 )
|
||
|
LDLIBS += $(shell $(MPT_TARGET)pkg-config --libs-only-l dbus-1 )
|
||
|
CPPFLAGS += -DMPT_WITH_RTKIT
|
||
|
RTKIT_C_SOURCES += include/rtkit/rtkit.c
|
||
|
endif
|
||
|
|
||
|
endif
|
||
|
endif
|
||
|
|
||
|
ifeq ($(MPT_TRY_PORTAUDIO),2)
|
||
|
|
||
|
ifeq ($(shell $(MPT_TARGET)pkg-config --exists portaudio-2.0 && echo yes),yes)
|
||
|
CPPFLAGS += $(shell $(MPT_TARGET)pkg-config --cflags-only-I portaudio-2.0 ) -DMPT_WITH_PORTAUDIO
|
||
|
LDFLAGS += $(shell $(MPT_TARGET)pkg-config --libs-only-L portaudio-2.0 ) $(shell $(MPT_TARGET)pkg-config --libs-only-other portaudio-2.0 )
|
||
|
LDLIBS += $(shell $(MPT_TARGET)pkg-config --libs-only-l portaudio-2.0 )
|
||
|
else
|
||
|
$(error PortAudio not found.)
|
||
|
endif
|
||
|
|
||
|
else
|
||
|
ifeq ($(MPT_TRY_PORTAUDIO),1)
|
||
|
|
||
|
ifeq ($(shell $(MPT_TARGET)pkg-config --exists portaudio-2.0 && echo yes),yes)
|
||
|
CPPFLAGS += $(shell $(MPT_TARGET)pkg-config --cflags-only-I portaudio-2.0 ) -DMPT_WITH_PORTAUDIO
|
||
|
LDFLAGS += $(shell $(MPT_TARGET)pkg-config --libs-only-L portaudio-2.0 ) $(shell $(MPT_TARGET)pkg-config --libs-only-other portaudio-2.0 )
|
||
|
LDLIBS += $(shell $(MPT_TARGET)pkg-config --libs-only-l portaudio-2.0 )
|
||
|
endif
|
||
|
|
||
|
endif
|
||
|
endif
|
||
|
|
||
|
ifeq ($(MPT_TRY_PULSEAUDIO),2)
|
||
|
|
||
|
ifeq ($(shell $(MPT_TARGET)pkg-config --exists libpulse libpulse-simple && echo yes),yes)
|
||
|
CPPFLAGS += $(shell $(MPT_TARGET)pkg-config --cflags-only-I libpulse libpulse-simple ) -DMPT_WITH_PULSEAUDIO -DMPT_WITH_PULSEAUDIOSIMPLE
|
||
|
LDFLAGS += $(shell $(MPT_TARGET)pkg-config --libs-only-L libpulse libpulse-simple ) $(shell $(MPT_TARGET)pkg-config --libs-only-other libpulse libpulse-simple )
|
||
|
LDLIBS += $(shell $(MPT_TARGET)pkg-config --libs-only-l libpulse libpulse-simple )
|
||
|
else
|
||
|
$(error PulseAudio not found.)
|
||
|
endif
|
||
|
|
||
|
else
|
||
|
ifeq ($(MPT_TRY_PULSEAUDIO),1)
|
||
|
|
||
|
ifeq ($(shell $(MPT_TARGET)pkg-config --exists libpulse libpulse-simple && echo yes),yes)
|
||
|
CPPFLAGS += $(shell $(MPT_TARGET)pkg-config --cflags-only-I libpulse libpulse-simple ) -DMPT_WITH_PULSEAUDIO -DMPT_WITH_PULSEAUDIOSIMPLE
|
||
|
LDFLAGS += $(shell $(MPT_TARGET)pkg-config --libs-only-L libpulse libpulse-simple ) $(shell $(MPT_TARGET)pkg-config --libs-only-other libpulse libpulse-simple )
|
||
|
LDLIBS += $(shell $(MPT_TARGET)pkg-config --libs-only-l libpulse libpulse-simple )
|
||
|
else
|
||
|
ifeq ($(shell $(MPT_TARGET)pkg-config --exists libpulse && echo yes),yes)
|
||
|
CPPFLAGS += $(shell $(MPT_TARGET)pkg-config --cflags-only-I libpulse ) -DMPT_WITH_PULSEAUDIO
|
||
|
LDFLAGS += $(shell $(MPT_TARGET)pkg-config --libs-only-L libpulse ) $(shell $(MPT_TARGET)pkg-config --libs-only-other libpulse )
|
||
|
LDLIBS += $(shell $(MPT_TARGET)pkg-config --libs-only-l libpulse )
|
||
|
endif
|
||
|
endif
|
||
|
|
||
|
endif
|
||
|
endif
|
||
|
|
||
|
ifeq ($(MPT_TRY_RTAUDIO),2)
|
||
|
|
||
|
ifeq ($(shell $(MPT_TARGET)pkg-config --exists rtaudio && echo yes),yes)
|
||
|
CPPFLAGS += $(shell $(MPT_TARGET)pkg-config --cflags-only-I rtaudio ) -DMPT_WITH_RTAUDIO
|
||
|
LDFLAGS += $(shell $(MPT_TARGET)pkg-config --libs-only-L rtaudio ) $(shell $(MPT_TARGET)pkg-config --libs-only-other rtaudio )
|
||
|
LDLIBS += $(shell $(MPT_TARGET)pkg-config --libs-only-l rtaudio )
|
||
|
else
|
||
|
$(error RtAudio not found.)
|
||
|
endif
|
||
|
|
||
|
else
|
||
|
ifeq ($(MPT_TRY_RTAUDIO),1)
|
||
|
|
||
|
ifeq ($(shell $(MPT_TARGET)pkg-config --exists rtaudio && echo yes),yes)
|
||
|
CPPFLAGS += $(shell $(MPT_TARGET)pkg-config --cflags-only-I rtaudio ) -DMPT_WITH_RTAUDIO
|
||
|
LDFLAGS += $(shell $(MPT_TARGET)pkg-config --libs-only-L rtaudio ) $(shell $(MPT_TARGET)pkg-config --libs-only-other rtaudio )
|
||
|
LDLIBS += $(shell $(MPT_TARGET)pkg-config --libs-only-l rtaudio )
|
||
|
endif
|
||
|
|
||
|
endif
|
||
|
endif
|
||
|
|
||
|
.PHONY: all
|
||
|
all: libopenmpt_native_support.so
|
||
|
|
||
|
%: %.o
|
||
|
$(PROGRESS)
|
||
|
$(INFO) Linking $@ ...
|
||
|
$(SILENT)$(MPT_TARGET)$(LINK.cc) $^ $(LOADLIBES) $(LDLIBS) -o $@
|
||
|
|
||
|
%.o: %.cpp
|
||
|
$(PROGRESS)
|
||
|
$(INFO) Compiling $< ...
|
||
|
$(SILENT)$(CCACHE) $(MPT_TARGET)$(COMPILE.cc) -DMODPLUG_TRACKER -DMPT_BUILD_WINESUPPORT -DMPT_WITH_NLOHMANNJSON $(OUTPUT_OPTION) $<
|
||
|
|
||
|
%.o: %.c
|
||
|
$(PROGRESS)
|
||
|
$(INFO) Compiling $< ...
|
||
|
$(SILENT)$(CCACHE) $(MPT_TARGET)$(COMPILE.c) -DMODPLUG_TRACKER -DMPT_BUILD_WINESUPPORT -DMPT_WITH_NLOHMANNJSON $(OUTPUT_OPTION) $<
|
||
|
|
||
|
COMMON_CXX_SOURCES += $(wildcard common/*.cpp)
|
||
|
MISC_CXX_SOURCES += $(wildcard misc/*.cpp)
|
||
|
SOUNDDEVICE_CXX_SOURCES += $(wildcard src/openmpt/sounddevice/*.cpp)
|
||
|
WINESUPPORT_CXX_SOURCES += $(wildcard mptrack/wine/*.cpp)
|
||
|
|
||
|
OPENMPT_WINESUPPORT_CXX_SOURCES += \
|
||
|
$(COMMON_CXX_SOURCES) \
|
||
|
$(MISC_CXX_SOURCES) \
|
||
|
$(SOUNDDEVICE_CXX_SOURCES) \
|
||
|
$(WINESUPPORT_CXX_SOURCES) \
|
||
|
|
||
|
OPENMPT_WINESUPPORT_C_SOURCES += \
|
||
|
$(RTKIT_C_SOURCES) \
|
||
|
|
||
|
OPENMPT_WINESUPPORT_OBJECTS = $(OPENMPT_WINESUPPORT_CXX_SOURCES:.cpp=.o) $(OPENMPT_WINESUPPORT_C_SOURCES:.c=.o)
|
||
|
|
||
|
OPENMPT_WINESUPPORT_LDFLAGS = -Wl,-z,defs,--no-undefined
|
||
|
LDLIBS_OPENMPT_WINESUPPORT =
|
||
|
|
||
|
libopenmpt_native_support.so: $(OPENMPT_WINESUPPORT_OBJECTS)
|
||
|
$(PROGRESS)
|
||
|
$(INFO) Linking $@ ...
|
||
|
$(SILENT)$(MPT_TARGET)$(LINK.cc) -shared $(OPENMPT_WINESUPPORT_LDFLAGS) $^ $(LOADLIBS) $(LDLIBS) $(LDLIBS_OPENMPT_WINESUPPORT) -o $@
|
||
|
|
||
|
endif
|