starting to support both Release and Debug build
authorIOhannes m zmölnig <zmoelnig@umlautQ.umlaeute.mur.at>
Wed, 10 Feb 2016 16:08:00 +0000 (17:08 +0100)
committerIOhannes m zmölnig <zmoelnig@umlautQ.umlaeute.mur.at>
Wed, 10 Feb 2016 16:08:00 +0000 (17:08 +0100)
debian/libbuilder/Makefile

index cf703340b5c5ce6b643d7c67ea8765760a8f5948..c45e218191e81fd7185ba3dac543f4e079a6e9e8 100644 (file)
@@ -5,7 +5,7 @@ includedir = $(prefix)/include
 
 SONAME=0.0.0
 SHORTSONAME=0
-TARGET := libjuce.so
+
 
 
 # (this disables dependency generation if multiple architectures are set)
@@ -50,6 +50,9 @@ JUCELIBS := $(JUCELIBS) libpng
 JUCELIBS_CPPFLAGS := $(JUCELIBS_CPPFLAGS) -DJUCE_INCLUDE_PNGLIB_CODE=0 -DPNG_SKIP_SETJMP_CHECK
 JUCELIBS := $(JUCELIBS) ogg vorbis vorbisfile vorbisenc
 JUCELIBS_CPPFLAGS := $(JUCELIBS_CPPFLAGS) -DJUCE_INCLUDE_OGGVORBIS_CODE=0
+## Debian's libbox2d-dev is incompatible with JUCE's
+#JUCELIBS := $(JUCELIBS) box2d
+#JUCELIBS_CPPFLAGS := $(JUCELIBS_CPPFLAGS) -DJUCE_INCLUDE_BOX2D_CODE=0
 JUCELIBS := $(JUCELIBS) zlib
 JUCELIBS_CPPFLAGS := $(JUCELIBS_CPPFLAGS) -DJUCE_INCLUDE_ZLIB_CODE=0
 JUCELIBS := $(JUCELIBS) freetype2
@@ -64,13 +67,32 @@ JUCELIBS_LIBS   := $(JUCELIBS_LIBS)   $(shell pkg-config --libs   $(JUCELIBS))
 
 BINDIR := build
 LIBDIR := build
-OBJDIR := build/intermediate/Release
 OUTDIR := build
 
-JUCE_CPPFLAGS := $(DEPFLAGS) \
+OBJDIR_DEBUG := build/intermediate/Debug
+TARGET_DEBUG := libjuce_d.so
+JUCE_CFLAGS_DEBUG = -D "DEBUG=1" -D "_DEBUG=1" -g -ggdb -O0
+JUCE_LDLAGS_DEBUG =
+
+OBJDIR_RELEASE := build/intermediate/Release
+TARGET_RELEASE := libjuce.so
+JUCE_CFLAGS_RELEASE = -D "NDEBUG=1" -D "DEBUG=0" -O3
+JUCE_LDLAGS_RELEASE = -fvisibility=hidden
+
+ifeq ($(CONFIG),Debug)
+TARGET := $(OUTDIR)/$(TARGET_DEBUG)
+endif
+
+ifeq ($(CONFIG),Release)
+TARGET := $(OUTDIR)/$(TARGET_RELEASE)
+endif
+
+ifndef CONFIG
+  TARGET := $(OUTDIR)/$(TARGET_DEBUG) $(OUTDIR)/$(TARGET_RELEASE)
+endif
+
+JUCE_CPPFLAGS := $(DEPFLAGS) $(JUCE_CPPFLAGS) \
        -D "LINUX=1" \
-       -D "NDEBUG=1" \
-       -D "DEBUG=0" \
        -D "JUCE_DLL_BUILD=1" \
        $(JUCELIBS_CPPFLAGS) \
        -I. \
@@ -78,37 +100,42 @@ JUCE_CPPFLAGS := $(DEPFLAGS) \
 
 JUCE_CFLAGS += \
        $(TARGET_ARCH) \
-       -O3 \
        -fPIC \
        -fpermissive \
        $(JUCELIBS_CFLAGS)
 JUCE_CXXFLAGS += -std=c++11
 JUCE_LDFLAGS += \
-       -rdynamic -shared -Wl,-soname,$(TARGET).$(SHORTSONAME) \
+       -rdynamic -shared \
        $(TARGET_ARCH) \
        -fPIC \
        $(JUCELIBS_LIBS) \
-       -L$(BINDIR) \
-       -L$(LIBDIR) \
        -ldl \
        -lpthread \
        -lrt \
        $(empty)
 
-OBJECTS=$(SOURCES:%.cpp=$(OBJDIR)/%.o)
+OBJECTS_RELEASE=$(SOURCES:%.cpp=$(OBJDIR_RELEASE)/%.o)
+OBJECTS_DEBUG=$(SOURCES:%.cpp=$(OBJDIR_DEBUG)/%.o)
 
 .PHONY: all clean install install-lib install-headers install-pkgconfig test introjucer
 
-all: $(OUTDIR)/$(TARGET) introjucer
+all: $(TARGET) introjucer
 
-$(OUTDIR)/$(TARGET): $(OBJECTS) $(RESOURCES)
-       @echo Linking juce_dll
+$(OUTDIR)/$(TARGET_RELEASE): $(OBJECTS) $(RESOURCES)
+       @echo Linking $(TARGET_RELEASE)
        -@mkdir -p $(OUTDIR)
-       $(CXX) -o $@ $^ $(JUCE_LDFLAGS) $(LDFLAGS) $(TARGET_ARCH)
+       $(CXX) -o $@ $^ -Wl,-soname,$(TARGET_RELEASE).$(SHORTSONAME) $(JUCE_LDFLAGS) $(JUCE_LDFLAGS_RELEASE) $(LDFLAGS) $(TARGET_ARCH)
+$(OBJDIR_RELEASE)/%.o: %.cpp libjuce_builddate.h
+       mkdir -p "$(OBJDIR_RELEASE)"
+       $(CXX) $(JUCE_CPPFLAGS) $(JUCE_CFLAGS_RELEASE) $(JUCE_CFLAGS) $(JUCE_CXXFLAGS) $(CPPFLAGS) $(CXXFLAGS) -o "$@" -c "$<"
 
-$(OBJDIR)/%.o: %.cpp libjuce_builddate.h
-       mkdir -p "$(OBJDIR)"
-       $(CXX) $(JUCE_CPPFLAGS) $(JUCE_CFLAGS) $(JUCE_CXXFLAGS) $(CPPFLAGS) $(CXXFLAGS) -o "$@" -c "$<"
+$(OUTDIR)/$(TARGET_DEBUG): $(OBJECTS) $(RESOURCES)
+       @echo Linking $(TARGET_DEBUG)
+       -@mkdir -p $(OUTDIR)
+       $(CXX) -o $@ $^ -Wl,-soname,$(TARGET_DEBUG).$(SHORTSONAME) $(JUCE_LDFLAGS) $(JUCE_LDFLAGS_DEBUG) $(LDFLAGS) $(TARGET_ARCH)
+$(OBJDIR_DEBUG)/%.o: %.cpp libjuce_builddate.h
+       mkdir -p "$(OBJDIR_DEBUG)"
+       $(CXX) $(JUCE_CPPFLAGS) $(JUCE_CFLAGS_DEBUG) $(JUCE_CFLAGS) $(JUCE_CXXFLAGS) $(CPPFLAGS) $(CXXFLAGS) -o "$@" -c "$<"
 
 libjuce_builddate.h:
        touch libjuce_builddate.h
@@ -143,7 +170,7 @@ install: install-headers install-lib install-pkgconfig
 test:
        $(MAKE) -C $(DEMO_PATH)
 
-introjucer: $(OUTDIR)/$(TARGET)
+introjucer: $(OUTDIR)/$(TARGET_RELEASE)
        $(MAKE) -C $(INTROJUCER_PATH) CONFIG=Release CPPFLAGS="$(CPPFLAGS) $(JUCELIBS_CPPFLAGS)" CFLAGS="$(CFLAGS) $(JUCELIBS_CFLAGS)" LDFLAGS="$(LDFLAGS) $(JUCELIBS_LIBS)"
 
 juce.pc: juce.pc.in