From 7e6855c584ef5af4d43ec1ae7153159d46533f8e Mon Sep 17 00:00:00 2001 From: Andrew Belt Date: Wed, 21 Mar 2018 06:50:09 -0400 Subject: [PATCH] Improve structure of dep building --- compile.mk | 5 ++--- dep.mk | 32 +++++++++++++++++++------------- dep/Makefile | 43 +++++++++++++++++++++---------------------- plugin.mk | 4 ++-- 4 files changed, 44 insertions(+), 40 deletions(-) diff --git a/compile.mk b/compile.mk index 4479af85..57533f01 100644 --- a/compile.mk +++ b/compile.mk @@ -1,9 +1,9 @@ ifndef RACK_DIR -$(error RACK_DIR is not defined in Makefile) +$(error RACK_DIR is not defined) endif ifndef VERSION -$(error VERSION is not defined in Makefile) +$(error VERSION is not defined) endif include $(RACK_DIR)/arch.mk @@ -52,7 +52,6 @@ DEPS := $(patsubst %, build/%.d, $(SOURCES)) $(TARGET): $(RESOURCES) $(OBJECTS) $(CXX) -o $@ $(OBJECTS) $(LDFLAGS) - -include $(DEPS) build/%.c.o: %.c diff --git a/dep.mk b/dep.mk index cfe09c48..9a5e1d0a 100644 --- a/dep.mk +++ b/dep.mk @@ -1,27 +1,33 @@ include $(RACK_DIR)/arch.mk -LOCAL ?= . -FLAGS += -g -O3 -march=nocona +DEP_LOCAL ?= . +DEP_FLAGS += -g -O3 -march=nocona ifeq ($(ARCH), mac) - FLAGS += -mmacosx-version-min=10.7 -stdlib=libc++ - LDFLAGS += -mmacosx-version-min=10.7 -stdlib=libc++ + DEP_FLAGS += -mmacosx-version-min=10.7 -stdlib=libc++ + DEP_LDFLAGS += -mmacosx-version-min=10.7 -stdlib=libc++ endif -CFLAGS += $(FLAGS) -CXXFLAGS += $(FLAGS) -export CFLAGS -export CXXFLAGS -export LDFLAGS +DEP_CFLAGS += $(DEP_FLAGS) +DEP_CXXFLAGS += $(DEP_FLAGS) # Commands WGET := curl -OL UNTAR := tar xf UNZIP := unzip -MAKE := make -CONFIGURE := ./configure --prefix="$(realpath $(LOCAL))" +CONFIGURE := ./configure --prefix="$(realpath $(DEP_LOCAL))" ifeq ($(ARCH), win) - CMAKE := cmake -G 'MSYS Makefiles' + CMAKE := cmake -G 'MSYS Makefiles' -DCMAKE_INSTALL_PREFIX="$(realpath $(DEP_LOCAL))" else - CMAKE := cmake + CMAKE := cmake -DCMAKE_INSTALL_PREFIX="$(realpath $(DEP_LOCAL))" endif + + +# Export environment for all dependency targets +$(DEPS): export CFLAGS = $(DEP_CFLAGS) +$(DEPS): export CXXFLAGS = $(DEP_CXXFLAGS) +$(DEPS): export LDFLAGS = $(DEP_LDFLAGS) + +dep: $(DEPS) + +.PHONY: dep diff --git a/dep/Makefile b/dep/Makefile index 34e349e2..24ea3252 100755 --- a/dep/Makefile +++ b/dep/Makefile @@ -1,9 +1,12 @@ RACK_DIR ?= .. +.NOTPARALLEL: -include $(RACK_DIR)/dep.mk -# Libraries -ifeq ($(ARCH),lin) +# Target paths + +include $(RACK_DIR)/arch.mk + +ifeq ($(ARCH), lin) glew = lib/libGLEW.so glfw = lib/libglfw.so jansson = lib/libjansson.so @@ -15,7 +18,7 @@ ifeq ($(ARCH),lin) openssl = lib/libssl.so endif -ifeq ($(ARCH),mac) +ifeq ($(ARCH), mac) glew = lib/libGLEW.dylib glfw = lib/libglfw.dylib jansson = lib/libjansson.dylib @@ -27,7 +30,7 @@ ifeq ($(ARCH),mac) openssl = lib/libssl.dylib endif -ifeq ($(ARCH),win) +ifeq ($(ARCH), win) glew = bin/glew32.dll glfw = bin/glfw3.dll jansson = bin/libjansson-4.dll @@ -44,26 +47,22 @@ nanosvg = include/nanosvg.h oui-blendish = include/blendish.h osdialog = include/osdialog.h +DEPS += $(glew) $(glfw) $(jansson) $(libspeexdsp) $(libcurl) $(libzip) $(rtmidi) $(rtaudio) $(nanovg) $(nanosvg) $(oui-blendish) $(osdialog) +include $(RACK_DIR)/dep.mk -.NOTPARALLEL: -all: $(glew) $(glfw) $(jansson) $(libspeexdsp) $(libcurl) $(libzip) $(rtmidi) $(rtaudio) $(nanovg) $(nanosvg) $(oui-blendish) $(osdialog) - @echo "" - @echo "#######################################" - @echo "# Built all dependencies successfully #" - @echo "#######################################" - @echo "" +# Targets $(glew): $(WGET) https://github.com/nigels-com/glew/releases/download/glew-2.1.0/glew-2.1.0.tgz $(UNTAR) glew-2.1.0.tgz $(MAKE) -C glew-2.1.0 glew.lib # On Linux, default lib path is lib64, so change it back to lib. - $(MAKE) -C glew-2.1.0 GLEW_DEST="$(LOCAL)" LIBDIR="$(LOCAL)/lib" install + $(MAKE) -C glew-2.1.0 GLEW_DEST="$(realpath $(DEP_LOCAL))" LIBDIR="$(realpath $(DEP_LOCAL))/lib" install $(glfw): cd glfw && $(CMAKE) . \ - -DCMAKE_INSTALL_PREFIX="$(LOCAL)" -DBUILD_SHARED_LIBS=ON \ + -DBUILD_SHARED_LIBS=ON \ -DGLFW_COCOA_CHDIR_RESOURCES=OFF -DGLFW_COCOA_MENUBAR=ON -DGLFW_COCOA_RETINA_FRAMEBUFFER=ON $(MAKE) -C glfw $(MAKE) -C glfw install @@ -85,7 +84,7 @@ $(libspeexdsp): $(openssl): $(WGET) https://www.openssl.org/source/openssl-1.1.0g.tar.gz $(UNTAR) openssl-1.1.0g.tar.gz - cd openssl-1.1.0g && ./config --prefix="$(LOCAL)" + cd openssl-1.1.0g && ./config --prefix="$(realpath $(DEP_LOCAL))" $(MAKE) -C openssl-1.1.0g $(MAKE) -C openssl-1.1.0g install_sw @@ -95,7 +94,7 @@ $(libcurl): $(openssl) cd curl-7.56.0 && $(CONFIGURE) \ --disable-ftp --disable-file --disable-ldap --disable-ldaps --disable-rtsp --disable-proxy --disable-dict --disable-telnet --disable-tftp --disable-pop3 --disable-imap --disable-smb --disable-smtp --disable-gopher --disable-manual \ --without-zlib --without-libpsl --without-libmetalink --without-libssh2 --without-librtmp --without-winidn --without-libidn2 --without-nghttp2 \ - --without-ca-bundle --with-ca-fallback --with-ssl="$(LOCAL)" + --without-ca-bundle --with-ca-fallback --with-ssl="$(realpath $(DEP_LOCAL))" $(MAKE) -C curl-7.56.0 $(MAKE) -C curl-7.56.0 install @@ -114,27 +113,27 @@ $(rtmidi): $(MAKE) -C rtmidi install ifeq ($(ARCH),mac) -RTAUDIO_FLAGS += -DAUDIO_OSX_CORE=ON + RTAUDIO_FLAGS += -DAUDIO_OSX_CORE=ON endif ifeq ($(ARCH),win) -RTAUDIO_FLAGS += -DAUDIO_WINDOWS_DS=ON -DAUDIO_WINDOWS_WASAPI=ON -DAUDIO_WINDOWS_ASIO=ON + RTAUDIO_FLAGS += -DAUDIO_WINDOWS_DS=ON -DAUDIO_WINDOWS_WASAPI=ON -DAUDIO_WINDOWS_ASIO=ON endif ifeq ($(ARCH),lin) -RTAUDIO_FLAGS += -DAUDIO_LINUX_ALSA=ON + RTAUDIO_FLAGS += -DAUDIO_LINUX_ALSA=ON endif ifdef RTAUDIO_ALL_APIS ifeq ($(ARCH),mac) -RTAUDIO_FLAGS += -DAUDIO_UNIX_JACK=ON + RTAUDIO_FLAGS += -DAUDIO_UNIX_JACK=ON endif ifeq ($(ARCH),lin) -RTAUDIO_FLAGS += -DAUDIO_LINUX_PULSE=ON -DAUDIO_UNIX_JACK=ON + RTAUDIO_FLAGS += -DAUDIO_LINUX_PULSE=ON -DAUDIO_UNIX_JACK=ON endif endif $(rtaudio): cd rtaudio && mkdir -p build - cd rtaudio/build && cmake -G 'Unix Makefiles' -DCMAKE_INSTALL_PREFIX="$(LOCAL)" $(RTAUDIO_FLAGS) .. + cd rtaudio/build && $(CMAKE) $(RTAUDIO_FLAGS) .. $(MAKE) -C rtaudio/build $(MAKE) -C rtaudio/build install diff --git a/plugin.mk b/plugin.mk index 61903990..0cd005e9 100644 --- a/plugin.mk +++ b/plugin.mk @@ -1,9 +1,9 @@ ifndef RACK_DIR -$(error RACK_DIR is not defined in Makefile) +$(error RACK_DIR is not defined) endif ifndef SLUG -$(error SLUG is not defined in Makefile) +$(error SLUG is not defined) endif FLAGS += -DSLUG=$(SLUG)