Is the Makefile System Broken?


#1

The last changes to the Linux Makefile exporter have messed my builds;

  • I’ve had to delete and remake my exporters because I was running into linker errors (ie: “Cannot find -lfreetype” - for no good reason)
  • I can’t create release builds: “make CONFIG=Release” (which has always worked until I updated the Introjucer today)

Has anybody else encountered the same issues?


#2

I tested the demo with today’s changes and it was ok…


#3

Hm… Not in my Makefile, which has been newly generated by the Introjucer;

ifeq ($(CONFIG),Release)
  BINDIR := build
  LIBDIR := build
  OBJDIR := build/intermediate/Release
  OUTDIR := ../../../MYPROGRAM/Version/64-bit

  ifeq ($(TARGET_ARCH),)
    TARGET_ARCH := -m64
  endif

  CPPFLAGS := $(DEPFLAGS) -D "LINUX=1" -D "DEBUG=1" -D "_DEBUG=1"

In the code above, “DEBUG” and “_DEBUG” are set to “1”, even though we’re in the check for the “Release” flag.


#4

All that’s changed is that I moved the second ifeq to be inside the config block… Surely it’s not possible that makefiles can’t handle nested “if” statements, is it??


#5

Not sure, since I’m not a Makefile expert… Nonetheless - I redid the JuceDemo’s Linux Makefile exporters to make and they’re totally fine, like you said.

I’ve really no idea what I’ve done to anger the Makefile gods, but cleaning and rebuilding the Introjucer, and redoing the configuration and exporters (again) seems to have fixed my project’s makefile debug/ndebug flags… :expressionless:


#6

I also did builds before and after today’s change, and had no issues.

This did, however, make changes to the Makefile structure, so it might have interacted badly with something in your Makefile…