Project

General

Profile

Download (1.27 KB) Statistics
| Branch: | Revision:
# packXXX Makefile, based on UniMake: Universal Makefile
# Created by Matthias Stirner, 01/2016

TARGET = packJPG
CC = gcc
CPP = g++
RC = windres -O coff
CPPFLAGS = -I. -O3 -Wall -pedantic -funroll-loops -ffast-math -fsched-spec-load -fomit-frame-pointer -std=c++14
LDFLAGS = -static -static-libgcc -static-libstdc++ -lstdc++fs
CSRC = $(wildcard *.c)
CPPSRC = $(wildcard *.cpp)
DEPS = $(wildcard *.h) Makefile
OBJ = $(patsubst %.c,%.o,$(CSRC)) $(patsubst %.cpp,%.o,$(CPPSRC))

# conditional stuff
ifeq ($(OS),Windows_NT)
LDFLAGS += -lpthread -L libwinpthread-1.dll
RES = icons.res
UPX := -upx --best --lzma $(TARGET).exe
else
CPPFLAGS += -DUNIX
RC =
RES =
UPX =
endif

%.o: %.cpp $(DEPS)
$(CPP) -c -o $@ $< $(CPPFLAGS)
%.res: %.rc
@-$(RC) $< $@

$(TARGET): $(OBJ) $(RES)
$(CPP) -o $@ $^ -s $(LDFLAGS)
$(UPX)

.PHONY: all dev lib dll

all: $(TARGET)

dev: CPPFLAGS += -DDEV_BUILD
dev: $(TARGET)

lib: CPPFLAGS += -DBUILD_LIB
lib: $(OBJ)
ar r $(TARGET)lib.a $(OBJ)
ranlib $(TARGET)lib.a
dll: CPPFLAGS += -DBUILD_DLL
dll: LDFLAGS += -Wl,--out-implib,libpackJPG.a -fvisibility=hidden
dll: $(OBJ)
$(CPP) -shared -o $(TARGET).dll $^ $(LDFLAGS)

clean:
@echo clean...
@-rm *.o *.a $(TARGET) $(TARGET).exe $(TARGET).dll
(1-1/16)