Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
3 changed files
with
449 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,236 @@ | ||
#!/usr/bin/make -f | ||
# Makefile for DPF # | ||
# ---------------- # | ||
# Created by falkTX | ||
# | ||
|
||
AR ?= ar | ||
CC ?= gcc | ||
CXX ?= g++ | ||
|
||
# --------------------------------------------------------------------------------------------------------------------- | ||
# Auto-detect OS if not defined | ||
|
||
ifneq ($(BSD),true) | ||
ifneq ($(HAIKU),true) | ||
ifneq ($(HURD),true) | ||
ifneq ($(LINUX),true) | ||
ifneq ($(MACOS),true) | ||
ifneq ($(WIN32),true) | ||
|
||
TARGET_MACHINE := $(shell $(CC) -dumpmachine) | ||
ifneq (,$(findstring bsd,$(TARGET_MACHINE))) | ||
BSD=true | ||
endif | ||
ifneq (,$(findstring haiku,$(TARGET_MACHINE))) | ||
HAIKU=true | ||
endif | ||
ifneq (,$(findstring gnu,$(TARGET_MACHINE))) | ||
HURD=true | ||
endif | ||
ifneq (,$(findstring linux,$(TARGET_MACHINE))) | ||
LINUX=true | ||
endif | ||
ifneq (,$(findstring apple,$(TARGET_MACHINE))) | ||
MACOS=true | ||
endif | ||
ifneq (,$(findstring mingw,$(TARGET_MACHINE))) | ||
WIN32=true | ||
endif | ||
|
||
endif | ||
endif | ||
endif | ||
endif | ||
endif | ||
endif | ||
|
||
# --------------------------------------------------------------------------------------------------------------------- | ||
# Set LINUX_OR_MACOS | ||
|
||
ifeq ($(LINUX),true) | ||
LINUX_OR_MACOS=true | ||
endif | ||
|
||
ifeq ($(MACOS),true) | ||
LINUX_OR_MACOS=true | ||
endif | ||
|
||
# --------------------------------------------------------------------------------------------------------------------- | ||
# Set MACOS_OR_WIN32 | ||
|
||
ifeq ($(MACOS),true) | ||
MACOS_OR_WIN32=true | ||
endif | ||
|
||
ifeq ($(WIN32),true) | ||
MACOS_OR_WIN32=true | ||
endif | ||
|
||
# --------------------------------------------------------------------------------------------------------------------- | ||
# Set UNIX | ||
|
||
ifeq ($(BSD),true) | ||
UNIX=true | ||
endif | ||
|
||
ifeq ($(HURD),true) | ||
UNIX=true | ||
endif | ||
|
||
ifeq ($(LINUX),true) | ||
UNIX=true | ||
endif | ||
|
||
ifeq ($(MACOS),true) | ||
UNIX=true | ||
endif | ||
|
||
# --------------------------------------------------------------------------------------------------------------------- | ||
# Set build and link flags | ||
|
||
BASE_FLAGS = -Wall -Wextra -pipe -MD -MP | ||
BASE_OPTS = -O3 -ffast-math -mtune=generic -msse -msse2 -fdata-sections -ffunction-sections | ||
|
||
ifeq ($(MACOS),true) | ||
# MacOS linker flags | ||
LINK_OPTS = -fdata-sections -ffunction-sections -Wl,-dead_strip -Wl,-dead_strip_dylibs | ||
else | ||
# Common linker flags | ||
LINK_OPTS = -fdata-sections -ffunction-sections -Wl,--gc-sections -Wl,-O1 -Wl,--as-needed | ||
ifneq ($(SKIP_STRIPPING),true) | ||
LINK_OPTS += -Wl,--strip-all | ||
endif | ||
endif | ||
|
||
ifeq ($(NOOPT),true) | ||
# No CPU-specific optimization flags | ||
BASE_OPTS = -O2 -ffast-math -fdata-sections -ffunction-sections | ||
endif | ||
|
||
ifeq ($(WIN32),true) | ||
# mingw has issues with this specific optimization | ||
# See https://github.com/falkTX/Carla/issues/696 | ||
BASE_OPTS += -fno-rerun-cse-after-loop | ||
ifeq ($(BUILDING_FOR_WINDOWS),true) | ||
BASE_FLAGS += -DBUILDING_CARLA_FOR_WINDOWS | ||
endif | ||
else | ||
# Not needed for Windows | ||
BASE_FLAGS += -fPIC -DPIC | ||
endif | ||
|
||
ifeq ($(DEBUG),true) | ||
BASE_FLAGS += -DDEBUG -O0 -g | ||
LINK_OPTS = | ||
else | ||
BASE_FLAGS += -DNDEBUG $(BASE_OPTS) -fvisibility=hidden | ||
CXXFLAGS += -fvisibility-inlines-hidden | ||
endif | ||
|
||
BUILD_C_FLAGS = $(BASE_FLAGS) -std=gnu99 $(CFLAGS) | ||
BUILD_CXX_FLAGS = $(BASE_FLAGS) -std=gnu++0x $(CXXFLAGS) | ||
LINK_FLAGS = $(LINK_OPTS) $(LDFLAGS) | ||
|
||
ifneq ($(MACOS),true) | ||
# Not available on MacOS | ||
LINK_FLAGS += -Wl,--no-undefined | ||
endif | ||
|
||
ifeq ($(MACOS_OLD),true) | ||
BUILD_CXX_FLAGS = $(BASE_FLAGS) $(CXXFLAGS) -DHAVE_CPP11_SUPPORT=0 | ||
endif | ||
|
||
ifeq ($(WIN32),true) | ||
# Always build statically on windows | ||
LINK_FLAGS += -static | ||
endif | ||
|
||
# --------------------------------------------------------------------------------------------------------------------- | ||
# Strict test build | ||
|
||
ifeq ($(TESTBUILD),true) | ||
BASE_FLAGS += -Werror -Wcast-qual -Wconversion -Wformat -Wformat-security -Wredundant-decls -Wshadow -Wstrict-overflow -fstrict-overflow -Wundef -Wwrite-strings | ||
BASE_FLAGS += -Wpointer-arith -Wabi -Winit-self -Wuninitialized -Wstrict-overflow=5 | ||
# BASE_FLAGS += -Wfloat-equal | ||
ifeq ($(CC),clang) | ||
BASE_FLAGS += -Wdocumentation -Wdocumentation-unknown-command | ||
BASE_FLAGS += -Weverything -Wno-c++98-compat -Wno-c++98-compat-pedantic -Wno-padded -Wno-exit-time-destructors -Wno-float-equal | ||
else | ||
BASE_FLAGS += -Wcast-align -Wunsafe-loop-optimizations | ||
endif | ||
ifneq ($(MACOS),true) | ||
BASE_FLAGS += -Wmissing-declarations -Wsign-conversion | ||
ifneq ($(CC),clang) | ||
BASE_FLAGS += -Wlogical-op | ||
endif | ||
endif | ||
CFLAGS += -Wold-style-definition -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes | ||
CXXFLAGS += -Weffc++ -Wnon-virtual-dtor -Woverloaded-virtual | ||
endif | ||
|
||
# --------------------------------------------------------------------------------------------------------------------- | ||
# Check for optional libs | ||
|
||
ifeq ($(MACOS_OR_WIN32),true) | ||
HAVE_DGL = true | ||
else | ||
HAVE_DGL = $(shell pkg-config --exists gl x11 && echo true) | ||
HAVE_JACK = $(shell pkg-config --exists jack && echo true) | ||
HAVE_LIBLO = $(shell pkg-config --exists liblo && echo true) | ||
endif | ||
|
||
ifneq ($(HAVE_DGL),true) | ||
$(error DGL missing 22) | ||
endif | ||
|
||
# --------------------------------------------------------------------------------------------------------------------- | ||
# Set libs stuff | ||
|
||
ifeq ($(HAVE_DGL),true) | ||
|
||
ifeq ($(MACOS),true) | ||
DGL_LIBS = -framework OpenGL -framework Cocoa | ||
endif | ||
|
||
ifeq ($(WIN32),true) | ||
DGL_LIBS = -lopengl32 -lgdi32 | ||
endif | ||
|
||
ifneq ($(MACOS_OR_WIN32),true) | ||
DGL_FLAGS = $(shell pkg-config --cflags gl x11) | ||
DGL_LIBS = $(shell pkg-config --libs gl x11) | ||
endif | ||
|
||
endif # HAVE_DGL | ||
|
||
# --------------------------------------------------------------------------------------------------------------------- | ||
# Set app extension | ||
|
||
ifeq ($(WIN32),true) | ||
APP_EXT = .exe | ||
endif | ||
|
||
# --------------------------------------------------------------------------------------------------------------------- | ||
# Set shared lib extension | ||
|
||
LIB_EXT = .so | ||
|
||
ifeq ($(MACOS),true) | ||
LIB_EXT = .dylib | ||
endif | ||
|
||
ifeq ($(WIN32),true) | ||
LIB_EXT = .dll | ||
endif | ||
|
||
# --------------------------------------------------------------------------------------------------------------------- | ||
# Set shared library CLI arg | ||
|
||
SHARED = -shared | ||
|
||
ifeq ($(MACOS),true) | ||
SHARED = -dynamiclib | ||
endif | ||
|
||
# --------------------------------------------------------------------------------------------------------------------- |
Oops, something went wrong.