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)
@@ -19,16 +23,16 @@ CXX = g++
1923AR = ar
2024LD = g++
2125
22- CFLAGS = -std=gnu++0x -Wall -MMD
26+ CFLAGS = -std=gnu++0x -MMD - Wall -Werror -Wextra -DVERSION= $( VERSION )
2327ifeq ($(CONFIG ) ,debug)
2428 CFLAGS += -g -DDEBUG=1
2529 LDFLAGS =
26- OBJDIR = . /obj/Debug/__ /src
30+ OBJDIR = $( BUILDDIR ) /obj/debug /src
2731 TARGET = loopidity-dbg
2832else
2933 CFLAGS += -O3
3034 LDFLAGS = -s
31- OBJDIR = . /obj/Release/__ /src
35+ OBJDIR = $( BUILDDIR ) /obj/release /src
3236 TARGET = loopidity
3337 CONFIG = 'release'
3438endif
@@ -58,44 +62,45 @@ all: before out after
5862
5963before :
6064 @echo " building $( CONFIG) configuration"
61- @test -d $(BINDIR ) || mkdir -p $(BINDIR )
62- @test -d $(OBJDIR ) || mkdir -p $(OBJDIR )
65+ @test -d $(BUILDDIR ) /$(BINDIR ) || mkdir -p $(BUILDDIR ) /$(BINDIR )
66+ @test -d $(BUILDDIR ) /$(DATADIR ) || mkdir -p $(BUILDDIR ) /$(DATADIR )
67+ @test -d $(BUILDDIR ) /$(OBJDIR ) || mkdir -p $(BUILDDIR ) /$(OBJDIR )
6368
6469out : before $(OBJECTS )
6570 @echo " linking $( CONFIG) binary"
66- @$(LD ) -o $(BINDIR ) /$(TARGET ) $(OBJECTS ) $(LDFLAGS )
67-
68- after : before $(ASSETS )
69- @echo " copying assets to bin directory"
70- @cp --no-clobber $(ASSETS ) $(BINDIR ) /
71-
71+ @$(LD ) -o $(BUILDDIR ) /$(BINDIR ) /$(TARGET ) $(OBJECTS ) $(LDFLAGS )
7272
7373$(OBJECTS ) : $(OBJDIR ) /% .o: ../src/% .cpp
7474 @echo " -> compiling $* .cpp"
75- @$(CXX ) $(CFLAGS ) -c $< -o $@
75+ @$(CXX ) $(CFLAGS ) -c $(BUILDDIR ) /$< -o $@
76+
77+ after : before out $(ASSETS )
78+ @echo " copying assets to data directory"
79+ @cp --no-clobber $(ASSETS ) $(BUILDDIR ) /$(DATADIR ) /
7680
7781
7882clean :
79- @echo " cleaning $( CONFIG) configuration"
80- @rm -rf $(BINDIR )
81- @rm -rf $(OBJDIR ) /* .o
83+ @echo " cleaning all configurations"
84+ rm -rf $(BUILDDIR ) /$(BINDIR ) /
85+ rm -rf $(BUILDDIR ) /$(DATADIR ) /
86+ rm -rf $(BUILDDIR ) /$(OBJDIR ) /
8287
8388
8489assert-writable :
85- @mkdir -p $(INSTALLDIR ) /bin
86- @mkdir -p $(INSTALLDIR ) /share/loopidity
87- @touch $(INSTALLDIR ) /bin /$(TARGET ) 2> /dev/null || \
90+ @mkdir -p $(INSTALLDIR ) /$( BINDIR )
91+ @mkdir -p $(INSTALLDIR ) /$( DATADIR )
92+ @touch $(INSTALLDIR ) /$( BINDIR ) /$(TARGET ) 2> /dev/null || \
8893 (echo '\nsuperuser privileges required - exiting\n' && exit 255)
8994
9095install : all assert-writable
9196 @echo installing loopidity
92- @install -Dm 755 $(BINDIR ) /$(TARGET ) $(INSTALLDIR ) /bin /
93- @install -Dm 644 $(ASSETS ) $(INSTALLDIR ) /share/loopidity /
97+ @install -Dm 755 $(BINDIR ) /$(TARGET ) $(INSTALLDIR ) /$( BINDIR ) /
98+ @install -Dm 644 $(ASSETS ) $(INSTALLDIR ) /$( DATADIR ) /
9499
95100uninstall : assert-writable
96101 @echo uninstalling loopidity
97- @rm $(INSTALLDIR ) /bin /$(TARGET ) 2> /dev/null
98- @rm -rf $(INSTALLDIR ) /share/loopidity/ 2> /dev/null
102+ @rm $(INSTALLDIR ) /$( BINDIR ) /$(TARGET ) 2> /dev/null
103+ @rm -rf $(INSTALLDIR ) /$( DATADIR ) / 2> /dev/null
99104
100105
101106-include $(OBJECTS :% .o=% .d)
0 commit comments