1# platform: linux, macports, mingw_dynamic, mingw_static 2# build: debug, release 3PLATFORM = linux 4BUILD = release 5 6 7TARGET_SOURCES = \ 8 hdr_create.cc \ 9 hdr_fix_ca.cc \ 10 hdr_denoise.cc \ 11 hdr_squish.cc \ 12 hdr_adjust.cc \ 13 hdr_convert.cc 14 15DEPENDENCY_SOURCES = \ 16 image.cc \ 17 fix_chromatic_aberration.cc \ 18 fix_noise.cc \ 19 squish_luminance.cc \ 20 solve_poisson.cc 21 22DEPENDENCY_HEADERS = \ 23 image.hh \ 24 fix_chromatic_aberration.hh \ 25 fix_noise.hh \ 26 squish_luminance.hh \ 27 solve_poisson.hh \ 28 shared_array.hh \ 29 helpers.hh \ 30 headers.hh 31 32 33ifeq (${PLATFORM},linux) 34CXX?= c++ 35CXXFLAGS+= -Wall 36CPPFLAGS+= `pkg-config --cflags popt` `pkg-config --cflags OpenEXR` \ 37 `Magick++-config --cppflags` 38LDFLAGS+= `pkg-config --libs popt` `pkg-config --libs libtiff-4` \ 39 `pkg-config --libs OpenEXR` `Magick++-config --libs` 40EXECUTABLES = ${TARGET_SOURCES:%.cc=%} 41endif 42 43ifeq (${PLATFORM},macports) 44CFLAGS = -msse2 -mfpmath=sse -I/opt/local/include/ImageMagick -I/opt/local/include/OpenEXR 45LDFLAGS = -lIlmImf -lHalf -lMagick++ -ltiff -lpopt -lstdc++ -lm 46EXECUTABLES = ${TARGET_SOURCES:%.cc=%} 47endif 48 49ifeq ($(PLATFORM),mingw_dynamic) 50CFLAGS = -msse2 -mfpmath=sse -I/mingw/include/ImageMagick -I/mingw/include/OpenEXR 51LDFLAGS = -enable-auto-import -lIlmImf -lHalf -lMagick++ -ltiff -lpopt -lstdc++ -lm 52EXECUTABLES = ${TARGET_SOURCES:%.cc=%.exe} 53endif 54 55ifeq ($(PLATFORM),mingw_static) 56CFLAGS = -msse2 -mfpmath=sse -I/mingw/include/ImageMagick -I/mingw/include/OpenEXR 57LDFLAGS = -static -static-libgcc -lIlmImf -lIlmThread -lIex -lHalf -lMagick++ -lMagickWand -lMagickCore -ljpeg -ltiff -lgdi32 -lpopt -lintl -liconv -lz -lltdl -lstdc++ -lm 58EXECUTABLES = ${TARGET_SOURCES:%.cc=%.exe} 59endif 60 61 62ifeq ($(BUILD),debug) 63CFLAGS := -g3 $(CFLAGS) 64endif 65 66ifeq ($(BUILD),release) 67CFLAGS := -O3 -funroll-loops -fomit-frame-pointer -DNDEBUG $(CFLAGS) 68endif 69 70 71TARGET_OBJS = $(TARGET_SOURCES:%.cc=%.o) 72DEPENDENCY_OBJS = $(DEPENDENCY_SOURCES:%.cc=%.o) 73 74.PHONY : all 75all : $(EXECUTABLES) 76 77$(TARGET_OBJS) $(DEPENDENCY_OBJS) : $(DEPENDENCY_HEADERS) 78$(EXECUTABLES) : $(DEPENDENCY_OBJS) 79$(foreach prog,$(EXECUTABLES),$(eval $$prog : $$prog.o)) 80 81%.o : %.cc 82# Clang cannot compile image.cc and squish_luminance.cc with -O2 and above 83 $(CXX) $(if $(and $(shell $(CXX) -v 2>&1 | grep clang),$(filter \ 84 image.cc squish_luminance.cc,$<)),$(CXXFLAGS:-O%=-O1), \ 85 $(CXXFLAGS)) $(CPPFLAGS) -o $@ -c $< 86 87% : %.o 88 $(CXX) $(CXXFLAGS) $(LDFLAGS) $^ -o $@ 89 90.PHONY : strip 91strip : all 92 strip $(EXECUTABLES) 93 94 95.PHONY : clean 96clean : 97 rm -f $(EXECUTABLES) 98