11
2+ VERSION = v0.14.003
3+
24ifndef DESTDIR
35 DESTDIR =
46endif
57ifndef PREFIX
68 PREFIX = /usr/local
79endif
8- BINDIR = ./bin
10+ BUILDDIR = ../build
11+ BINDIR = bin
12+ DATADIR = share/loopidity
913ASSETSDIR = ../assets
1014INSTALLDIR = $(DESTDIR )$(PREFIX )
1115ifeq (${MSYSTEM},MINGW32)
@@ -18,18 +22,18 @@ CC = gcc
1822CXX = g++
1923AR = ar
2024LD = g++
21- CFLAGS = -std=gnu++0x -Wall -MMD \
22- -DLOOPIDITY_BINDIR=\"$(INSTALLDIR ) /bin\" \
25+ CFLAGS = -std=gnu++0x -MMD - Wall -Werror -Wextra -DVERSION= $( VERSION ) \
26+ -DLOOPIDITY_BINDIR=\"$(INSTALLDIR ) /bin\" \
2327 -DLOOPIDITY_DATADIR=\"$(INSTALLDIR ) /share/loopidity\"
2428ifeq ($(CONFIG ) ,debug)
2529 CFLAGS += -g -DDEBUG=1
2630 LDFLAGS =
27- OBJDIR = . /obj/Debug/__ /src
31+ OBJDIR = $( BUILDDIR ) /obj/debug /src
2832 TARGET = loopidity-dbg
2933else
3034 CFLAGS += -O3
3135 LDFLAGS = -s
32- OBJDIR = . /obj/Release/__ /src
36+ OBJDIR = $( BUILDDIR ) /obj/release /src
3337 TARGET = loopidity
3438 CONFIG = 'release'
3539endif
@@ -59,44 +63,45 @@ all: before out after
5963
6064before :
6165 @echo " building $( CONFIG) configuration"
62- @test -d $(BINDIR ) || mkdir -p $(BINDIR )
63- @test -d $(OBJDIR ) || mkdir -p $(OBJDIR )
66+ @test -d $(BUILDDIR ) /$(BINDIR ) || mkdir -p $(BUILDDIR ) /$(BINDIR )
67+ @test -d $(BUILDDIR ) /$(DATADIR ) || mkdir -p $(BUILDDIR ) /$(DATADIR )
68+ @test -d $(BUILDDIR ) /$(OBJDIR ) || mkdir -p $(BUILDDIR ) /$(OBJDIR )
6469
6570out : before $(OBJECTS )
6671 @echo " linking $( CONFIG) binary"
67- @$(LD ) -o $(BINDIR ) /$(TARGET ) $(OBJECTS ) $(LDFLAGS )
68-
69- after : before $(ASSETS )
70- @echo " copying assets to bin directory"
71- @cp --no-clobber $(ASSETS ) $(BINDIR ) /
72-
72+ @$(LD ) -o $(BUILDDIR ) /$(BINDIR ) /$(TARGET ) $(OBJECTS ) $(LDFLAGS )
7373
7474$(OBJECTS ) : $(OBJDIR ) /% .o: ../src/% .cpp
7575 @echo " -> compiling $* .cpp"
76- @$(CXX ) $(CFLAGS ) -c $< -o $@
76+ @$(CXX ) $(CFLAGS ) -c $(BUILDDIR ) /$< -o $@
77+
78+ after : before out $(ASSETS )
79+ @echo " copying assets to data directory"
80+ @cp --no-clobber $(ASSETS ) $(BUILDDIR ) /$(DATADIR ) /
7781
7882
7983clean :
80- @echo " cleaning $( CONFIG) configuration"
81- @rm -rf $(BINDIR )
82- @rm -rf $(OBJDIR ) /* .o
84+ @echo " cleaning all configurations"
85+ rm -rf $(BUILDDIR ) /$(BINDIR ) /
86+ rm -rf $(BUILDDIR ) /$(DATADIR ) /
87+ rm -rf $(BUILDDIR ) /$(OBJDIR ) /
8388
8489
8590assert-writable :
86- @mkdir -p $(INSTALLDIR ) /bin
87- @mkdir -p $(INSTALLDIR ) /share/loopidity
88- @touch $(INSTALLDIR ) /bin /$(TARGET ) 2> /dev/null || \
91+ @mkdir -p $(INSTALLDIR ) /$( BINDIR )
92+ @mkdir -p $(INSTALLDIR ) /$( DATADIR )
93+ @touch $(INSTALLDIR ) /$( BINDIR ) /$(TARGET ) 2> /dev/null || \
8994 (echo '\nsuperuser privileges required - exiting\n' && exit 255)
9095
9196install : all assert-writable
9297 @echo installing loopidity
93- @install -Dm 755 $(BINDIR ) /$(TARGET ) $(INSTALLDIR ) /bin /
94- @install -Dm 644 $(ASSETS ) $(INSTALLDIR ) /share/loopidity /
98+ @install -Dm 755 $(BINDIR ) /$(TARGET ) $(INSTALLDIR ) /$( BINDIR ) /
99+ @install -Dm 644 $(ASSETS ) $(INSTALLDIR ) /$( DATADIR ) /
95100
96101uninstall : assert-writable
97102 @echo uninstalling loopidity
98- @rm $(INSTALLDIR ) /bin /$(TARGET ) 2> /dev/null
99- @rm -rf $(INSTALLDIR ) /share/loopidity/ 2> /dev/null
103+ @rm $(INSTALLDIR ) /$( BINDIR ) /$(TARGET ) 2> /dev/null
104+ @rm -rf $(INSTALLDIR ) /$( DATADIR ) / 2> /dev/null
100105
101106
102107-include $(OBJECTS :% .o=% .d)
0 commit comments