wineasio/Makefile.mk
falkTX 8180297a0d
Modernize makefile: separate build dirs, single rule source
Signed-off-by: falkTX <falktx@falktx.com>
2020-02-08 14:25:06 +00:00

104 lines
2.7 KiB
Makefile

#!/usr/bin/make -f
# Makefile for WineASIO #
# --------------------- #
# Created by falkTX
# Initially generated by winemaker
#
ifeq ($(ARCH),)
$(error incorrect use of Makefile, ARCH var is missing)
endif
ifeq ($(M),)
$(error incorrect use of Makefile, M var is missing)
endif
PREFIX = /usr
SRCDIR = .
DLLS = wineasio.dll
### Tools
CC = gcc
WINECC = winegcc
### Common settings
CEXTRA = -m$(M) -D_REENTRANT -fPIC -Wall -pipe
CEXTRA += -fno-strict-aliasing -Wdeclaration-after-statement -Wwrite-strings -Wpointer-arith
CEXTRA += -Werror=implicit-function-declaration
CEXTRA += $(shell pkg-config --cflags jack)
RCEXTRA =
INCLUDE_PATH = -I. -Irtaudio/include
INCLUDE_PATH += -I$(PREFIX)/include/wine
INCLUDE_PATH += -I$(PREFIX)/include/wine/windows
INCLUDE_PATH += -I$(PREFIX)/include/wine-development
INCLUDE_PATH += -I$(PREFIX)/include/wine-development/wine/windows
DLL_PATH =
LIBRARY_PATH =
LIBRARIES = $(shell pkg-config --libs jack)
# 64bit build needs an extra flag
ifeq ($(M),64)
CEXTRA += -DNATIVE_INT64
endif
# Debug or Release
ifeq ($(DEBUG),true)
CEXTRA += -O0 -DDEBUG -g -D__WINESRC__
LIBRARIES +=
else
CEXTRA += -O2 -DNDEBUG -fvisibility=hidden
endif
### wineasio.dll sources and settings
wineasio_dll_MODULE = wineasio.dll
wineasio_dll_C_SRCS = asio.c \
main.c \
regsvr.c
wineasio_dll_LDFLAGS = -shared \
-m$(M) \
-mnocygwin \
$(wineasio_dll_MODULE:%=%.spec) \
-L/usr/lib/wine \
-L/usr/lib$(M)/wine \
-L/usr/lib/$(ARCH)-linux-gnu/wine \
-L/usr/lib/$(ARCH)-linux-gnu/wine-development \
-L/opt/wine-staging/lib \
-L/opt/wine-staging/lib/wine \
-L/opt/wine-staging/lib$(M) \
-L/opt/wine-staging/lib$(M)/wine
wineasio_dll_DLL_PATH =
wineasio_dll_DLLS = odbc32 \
ole32 \
winmm
wineasio_dll_LIBRARY_PATH=
wineasio_dll_LIBRARIES= uuid
wineasio_dll_OBJS = $(wineasio_dll_C_SRCS:%.c=build$(M)/%.c.o)
### Global source lists
C_SRCS = $(wineasio_dll_C_SRCS)
### Generic targets
all: rtaudio/include/asio.h $(DLLS:%=build$(M)/%.so)
### Build rules
.PHONY: all
# Implicit rules
DEFINCL = $(INCLUDE_PATH) $(DEFINES) $(OPTIONS)
build$(M)/%.c.o: %.c
@$(shell mkdir -p build$(M))
$(CC) -c $(DEFINCL) $(CFLAGS) $(CEXTRA) -o $@ $<
### Target specific build rules
DEFLIB = $(LIBRARY_PATH) $(LIBRARIES) $(DLL_PATH)
build$(M)/$(wineasio_dll_MODULE).so: $(wineasio_dll_OBJS)
$(WINECC) $(wineasio_dll_LDFLAGS) -o $@ $(wineasio_dll_OBJS) $(wineasio_dll_LIBRARY_PATH) $(DEFLIB) $(wineasio_dll_DLLS:%=-l%) $(wineasio_dll_LIBRARIES:%=-l%)