simplifies Makefiles

Tue, 28 Aug 2018 14:03:09 +0200

author
Mike Becker <universe@uap-core.de>
date
Tue, 28 Aug 2018 14:03:09 +0200
changeset 58
7ba8a97a8b6e
parent 57
498d92449d6d
child 59
3fa1de896666

simplifies Makefiles

Makefile file | annotate | diff | comparison | revisions
src/Makefile file | annotate | diff | comparison | revisions
src/chess/Makefile file | annotate | diff | comparison | revisions
src/chess/conf.mk file | annotate | diff | comparison | revisions
--- a/Makefile	Tue Aug 28 13:45:22 2018 +0200
+++ b/Makefile	Tue Aug 28 14:03:09 2018 +0200
@@ -28,17 +28,19 @@
 
 include conf.mk
 
+ROOTDIR=$(shell pwd)
+
 all: chess
-	cd src; $(MAKE)
+	cd src; $(MAKE) BUILDDIR=$(ROOTDIR)/build/release
 
 debug: chess-debug
-	cd src; $(MAKE) debug
+	cd src; $(MAKE) BUILDDIR=$(ROOTDIR)/build/debug CFLAGS="${CFLAGS_D}"
 
 chess:
-	cd src/chess; $(MAKE) BUILDDIR=../../build CONFIG=../../conf.mk
+	cd src/chess; $(MAKE) BUILDDIR=$(ROOTDIR)/build/release
 
 chess-debug:
-	cd src/chess; $(MAKE) debug BUILDDIR=../../build CONFIG=../../conf.mk
+	cd src/chess; $(MAKE) BUILDDIR=$(ROOTDIR)/build/debug CFLAGS="${CFLAGS_D}"
 	
 clean:
 	$(RM) $(RMFLAGS) build
--- a/src/Makefile	Tue Aug 28 13:45:22 2018 +0200
+++ b/src/Makefile	Tue Aug 28 14:03:09 2018 +0200
@@ -36,26 +36,15 @@
 SRC += client.c
 SRC += game.c
 
-OBJ = $(SRC:%.c=../build/release/%$(OBJ_EXT))
-OBJ_D = $(SRC:%.c=../build/debug/%$(OBJ_EXT))
+OBJ = $(SRC:%.c=$(BUILDDIR)/%$(OBJ_EXT))
 
-all: ../build/release $(OBJ)
-	$(LD) -o ../build/release/$(BIN) $(OBJ) \
-	../build/release/chess$(LIB_EXT) $(LDFLAGS)
-
-debug: ../build/debug $(OBJ_D)
-	$(LD) -o ../build/debug/$(BIN) $(OBJ_D) \
-	../build/debug/chess$(LIB_EXT) $(LDFLAGS)	
+all: $(BUILDDIR) $(OBJ)
+	$(LD) -o $(BUILDDIR)/$(BIN) $(OBJ) \
+	$(BUILDDIR)/chess$(LIB_EXT) $(LDFLAGS)
 
-../build/release/%$(OBJ_EXT): %.c
+$(BUILDDIR)/%$(OBJ_EXT): %.c
 	$(CC) -o $@ $(CFLAGS) -c $<
-
-../build/debug/%$(OBJ_EXT): %.c
-	$(CC) -o $@ $(CFLAGS_D) -c $<
 	
-../build/release:
-	$(MKDIR) $(MKDIRFLAGS) ../build/release
-	
-../build/debug:
-	$(MKDIR) $(MKDIRFLAGS) ../build/debug
+$(BUILDDIR):
+	$(MKDIR) $(MKDIRFLAGS) $(BUILDDIR)
 
--- a/src/chess/Makefile	Tue Aug 28 13:45:22 2018 +0200
+++ b/src/chess/Makefile	Tue Aug 28 14:03:09 2018 +0200
@@ -26,10 +26,7 @@
 # POSSIBILITY OF SUCH DAMAGE.
 #
 
-BUILDDIR = ../build
-CONFIG = conf.mk
-
-include $(CONFIG)
+include ../../conf.mk
 
 SRC += pawn.c
 SRC += rook.c
@@ -40,29 +37,14 @@
 SRC += rules.c
 SRC += pgn.c
 
-OBJ = $(SRC:%.c=$(BUILDDIR)/release/%$(OBJ_EXT))
-OBJ_D = $(SRC:%.c=$(BUILDDIR)/debug/%$(OBJ_EXT))
+OBJ = $(SRC:%.c=$(BUILDDIR)/%$(OBJ_EXT))
 
-all: $(BUILDDIR)/release $(OBJ)
-	$(AR) $(ARFLAGS) $(BUILDDIR)/release/chess$(LIB_EXT) $(OBJ)
+all: $(BUILDDIR) $(OBJ)
+	$(AR) $(ARFLAGS) $(BUILDDIR)/chess$(LIB_EXT) $(OBJ)
 
-debug: $(BUILDDIR)/debug $(OBJ_D)
-	$(AR) $(ARFLAGS) $(BUILDDIR)/debug/chess$(LIB_EXT) $(OBJ_D)	
-
-$(BUILDDIR)/release/%$(OBJ_EXT): %.c
+$(BUILDDIR)/%$(OBJ_EXT): %.c
 	$(CC) -o $@ $(CFLAGS) -c $<
 	
-$(BUILDDIR)/debug/%$(OBJ_EXT): %.c
-	$(CC) -o $@ $(CFLAGS_D) -c $<
-
 $(BUILDDIR):
 	$(MKDIR) $(MKDIRFLAGS) $(BUILDDIR)
-	
-clear:
-	$(RM) $(RMFLAGS) $(BUILDDIR)
-	
- $(BUILDDIR)/release:
-	$(MKDIR) $(MKDIRFLAGS)  $(BUILDDIR)/release
-	
- $(BUILDDIR)/debug:
-	$(MKDIR) $(MKDIRFLAGS)  $(BUILDDIR)/debug
+	
\ No newline at end of file
--- a/src/chess/conf.mk	Tue Aug 28 13:45:22 2018 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-#
-# Copyright 2016 Mike Becker. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-#   1. Redistributions of source code must retain the above copyright
-#      notice, this list of conditions and the following disclaimer.
-#
-#   2. Redistributions in binary form must reproduce the above copyright
-#      notice, this list of conditions and the following disclaimer in the
-#      documentation and/or other materials provided with the distribution.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-
-MKDIR   = mkdir
-RM      = rm
-AR      = ar
-
-CC         = gcc
-CFLAGS_D   = -g -std=gnu99 -Wall -pedantic
-CFLAGS     = -O2 -std=gnu99
-ARFLAGS    = -r
-MKDIRFLAGS = -p
-RMFLAGS    = -f -R
-
-OBJ_EXT = .o
-LIB_EXT = .a

mercurial