mirror of
https://github.com/gbdev/rgbds.git
synced 2025-11-20 18:22:07 +00:00
Merge pull request #176 from makefile-cleanup
Cleanup Makefile Signed-off-by: Antonio Niño Díaz <antonio_nd@outlook.com>
This commit is contained in:
@@ -1,6 +0,0 @@
|
|||||||
# GNU Make 3.x doesn't support the "!=" shell syntax, so here's an alternative
|
|
||||||
|
|
||||||
PKG_CONFIG = pkg-config
|
|
||||||
PNGFLAGS = $(shell ${PKG_CONFIG} --cflags libpng)
|
|
||||||
|
|
||||||
include Makefile
|
|
||||||
161
Makefile
161
Makefile
@@ -1,25 +1,35 @@
|
|||||||
PKG_CONFIG = pkg-config
|
# User-defined variables
|
||||||
WARNFLAGS = -Wall -Werror
|
|
||||||
PNGFLAGS != ${PKG_CONFIG} --cflags libpng
|
|
||||||
REALCFLAGS = ${CFLAGS} ${WARNFLAGS} ${PNGFLAGS} -Iinclude -g \
|
|
||||||
-std=c99 -D_POSIX_C_SOURCE=200809L
|
|
||||||
|
|
||||||
|
Q := @
|
||||||
|
PREFIX := /usr/local
|
||||||
|
bindir := ${PREFIX}/bin
|
||||||
|
mandir := ${PREFIX}/man
|
||||||
|
STRIP := -s
|
||||||
|
BINMODE := 555
|
||||||
|
MANMODE := 444
|
||||||
|
|
||||||
|
# Other variables
|
||||||
|
|
||||||
|
PKG_CONFIG := pkg-config
|
||||||
|
PNGCFLAGS := `${PKG_CONFIG} --static --cflags libpng`
|
||||||
|
PNGLDFLAGS := `${PKG_CONFIG} --static --libs-only-L libpng`
|
||||||
|
PNGLDLIBS := `${PKG_CONFIG} --static --libs-only-l libpng`
|
||||||
|
|
||||||
|
WARNFLAGS := -Wall -Werror
|
||||||
|
CFLAGS := ${WARNFLAGS} -g -std=c99 -D_POSIX_C_SOURCE=200809L -Iinclude
|
||||||
|
|
||||||
|
YFLAGS :=
|
||||||
LFLAGS := --nounistd
|
LFLAGS := --nounistd
|
||||||
|
|
||||||
YACC := yacc
|
YACC := yacc
|
||||||
FLEX := flex
|
LEX := flex
|
||||||
RM := rm -rf
|
RM := rm -rf
|
||||||
|
|
||||||
# User-defined variables
|
# Rules to build the RGBDS binaries
|
||||||
PREFIX = /usr/local
|
|
||||||
bindir = ${PREFIX}/bin
|
|
||||||
mandir = ${PREFIX}/man
|
|
||||||
Q = @
|
|
||||||
STRIP = -s
|
|
||||||
BINMODE = 555
|
|
||||||
MANMODE = 444
|
|
||||||
|
|
||||||
rgbasm_obj = \
|
all: rgbasm rgblink rgbfix rgbgfx
|
||||||
|
|
||||||
|
rgbasm_obj := \
|
||||||
src/asm/asmy.o \
|
src/asm/asmy.o \
|
||||||
src/asm/charmap.o \
|
src/asm/charmap.o \
|
||||||
src/asm/fstack.o \
|
src/asm/fstack.o \
|
||||||
@@ -36,7 +46,10 @@ rgbasm_obj = \
|
|||||||
src/extern/strlcpy.o \
|
src/extern/strlcpy.o \
|
||||||
src/extern/strlcat.o
|
src/extern/strlcat.o
|
||||||
|
|
||||||
rgblink_obj = \
|
src/asm/asmy.h: src/asm/asmy.c
|
||||||
|
src/asm/locallex.o src/asm/globlex.o src/asm/lexer.o: src/asm/asmy.h
|
||||||
|
|
||||||
|
rgblink_obj := \
|
||||||
src/link/assign.o \
|
src/link/assign.o \
|
||||||
src/link/lexer.o \
|
src/link/lexer.o \
|
||||||
src/link/library.o \
|
src/link/library.o \
|
||||||
@@ -50,17 +63,46 @@ rgblink_obj = \
|
|||||||
src/link/symbol.o \
|
src/link/symbol.o \
|
||||||
src/extern/err.o
|
src/extern/err.o
|
||||||
|
|
||||||
rgbfix_obj = \
|
src/link/parser.h: src/link/parser.c
|
||||||
|
src/link/lexer.o: src/link/parser.h
|
||||||
|
|
||||||
|
rgbfix_obj := \
|
||||||
src/fix/main.o \
|
src/fix/main.o \
|
||||||
src/extern/err.o
|
src/extern/err.o
|
||||||
|
|
||||||
rgbgfx_obj = \
|
rgbgfx_obj := \
|
||||||
src/gfx/gb.o \
|
src/gfx/gb.o \
|
||||||
src/gfx/main.o \
|
src/gfx/main.o \
|
||||||
src/gfx/makepng.o \
|
src/gfx/makepng.o \
|
||||||
src/extern/err.o
|
src/extern/err.o
|
||||||
|
|
||||||
all: rgbasm rgblink rgbfix rgbgfx
|
rgbasm: ${rgbasm_obj}
|
||||||
|
$Q${CC} ${CFLAGS} -o $@ ${rgbasm_obj} -lm
|
||||||
|
|
||||||
|
rgblink: ${rgblink_obj}
|
||||||
|
$Q${CC} ${CFLAGS} -o $@ ${rgblink_obj}
|
||||||
|
|
||||||
|
rgbfix: ${rgbfix_obj}
|
||||||
|
$Q${CC} ${CFLAGS} -o $@ ${rgbfix_obj}
|
||||||
|
|
||||||
|
rgbgfx: ${rgbgfx_obj}
|
||||||
|
$Q${CC} ${CFLAGS} ${PNGLDFLAGS} -o $@ ${rgbgfx_obj} ${PNGLDLIBS}
|
||||||
|
|
||||||
|
# Rules to process files
|
||||||
|
|
||||||
|
.y.c:
|
||||||
|
$Q${YACC} -d ${YFLAGS} -o $@ $<
|
||||||
|
|
||||||
|
.l.o:
|
||||||
|
$Q${RM} $*.c
|
||||||
|
$Q${LEX} ${LFLAGS} -o $*.c $<
|
||||||
|
$Q${CC} ${CFLAGS} -c -o $@ $*.c
|
||||||
|
$Q${RM} $*.c
|
||||||
|
|
||||||
|
.c.o:
|
||||||
|
$Q${CC} ${CFLAGS} ${PNGCFLAGS} -c -o $@ $<
|
||||||
|
|
||||||
|
# Target used to remove all files generated by other Makefile targets.
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
$Q${RM} rgbds.7.html gbz80.7.html rgbds.5.html
|
$Q${RM} rgbds.7.html gbz80.7.html rgbds.5.html
|
||||||
@@ -71,6 +113,8 @@ clean:
|
|||||||
$Q${RM} src/asm/asmy.c src/asm/asmy.h
|
$Q${RM} src/asm/asmy.c src/asm/asmy.h
|
||||||
$Q${RM} src/link/lexer.c src/link/parser.c src/link/parser.h
|
$Q${RM} src/link/lexer.c src/link/parser.c src/link/parser.h
|
||||||
|
|
||||||
|
# Target used to install the binaries and man pages.
|
||||||
|
|
||||||
install: all
|
install: all
|
||||||
$Qmkdir -p ${DESTDIR}${bindir}
|
$Qmkdir -p ${DESTDIR}${bindir}
|
||||||
$Qinstall ${STRIP} -m ${BINMODE} rgbasm ${DESTDIR}${bindir}/rgbasm
|
$Qinstall ${STRIP} -m ${BINMODE} rgbasm ${DESTDIR}${bindir}/rgbasm
|
||||||
@@ -88,62 +132,10 @@ install: all
|
|||||||
$Qinstall -m ${MANMODE} src/link/rgblink.5 ${DESTDIR}${mandir}/man5/rgblink.5
|
$Qinstall -m ${MANMODE} src/link/rgblink.5 ${DESTDIR}${mandir}/man5/rgblink.5
|
||||||
$Qinstall -m ${MANMODE} src/gfx/rgbgfx.1 ${DESTDIR}${mandir}/man1/rgbgfx.1
|
$Qinstall -m ${MANMODE} src/gfx/rgbgfx.1 ${DESTDIR}${mandir}/man1/rgbgfx.1
|
||||||
|
|
||||||
rgbasm: ${rgbasm_obj}
|
# Target for the project maintainer to easily create web manuals.
|
||||||
$Q${CC} ${REALCFLAGS} -o $@ ${rgbasm_obj} -lm
|
|
||||||
|
|
||||||
rgblink: ${rgblink_obj}
|
|
||||||
$Q${CC} ${REALCFLAGS} -o $@ ${rgblink_obj}
|
|
||||||
|
|
||||||
rgbfix: ${rgbfix_obj}
|
|
||||||
$Q${CC} ${REALCFLAGS} -o $@ ${rgbfix_obj}
|
|
||||||
|
|
||||||
rgbgfx: ${rgbgfx_obj}
|
|
||||||
$Q${CC} ${REALCFLAGS} -o $@ ${rgbgfx_obj} `${PKG_CONFIG} --libs libpng`
|
|
||||||
|
|
||||||
.y.c:
|
|
||||||
$Q${YACC} -d ${YFLAGS} -o $@ $<
|
|
||||||
|
|
||||||
.l.o:
|
|
||||||
$Q${RM} $*.c
|
|
||||||
$Q${FLEX} ${LFLAGS} -o $*.c $<
|
|
||||||
$Q${CC} ${REALCFLAGS} -c -o $@ $*.c
|
|
||||||
$Q${RM} $*.c
|
|
||||||
|
|
||||||
.c.o:
|
|
||||||
$Q${CC} ${REALCFLAGS} -c -o $@ $<
|
|
||||||
|
|
||||||
src/asm/locallex.o src/asm/globlex.o src/asm/lexer.o: src/asm/asmy.h
|
|
||||||
src/asm/asmy.h: src/asm/asmy.c
|
|
||||||
|
|
||||||
src/link/lexer.o : src/link/parser.h
|
|
||||||
src/link/parser.h : src/link/parser.c
|
|
||||||
|
|
||||||
# Below is a target for the project maintainer to easily create win32 exes.
|
|
||||||
# This is not for Windows users!
|
|
||||||
# If you're building on Windows with Cygwin or Mingw, just follow the Unix
|
|
||||||
# install instructions instead.
|
|
||||||
mingw:
|
|
||||||
$Q${RM} win32 win64
|
|
||||||
$Qmkdir win32 win64
|
|
||||||
$Qenv make clean
|
|
||||||
$Qenv PKG_CONFIG_PATH=/usr/i686-w64-mingw32/sys-root/mingw/lib/pkgconfig/ \
|
|
||||||
make CC=i686-w64-mingw32-gcc YACC=bison WARNFLAGS= -j
|
|
||||||
$Qmv rgbasm win32/rgbasm.exe
|
|
||||||
$Qmv rgblink win32/rgblink.exe
|
|
||||||
$Qmv rgbfix win32/rgbfix.exe
|
|
||||||
$Qmv rgbgfx win32/rgbgfx.exe
|
|
||||||
$Qenv make clean
|
|
||||||
$Qenv PKG_CONFIG_PATH=/usr/x86_64-w64-mingw32/sys-root/mingw/lib/pkgconfig/ \
|
|
||||||
make CC=x86_64-w64-mingw32-gcc YACC=bison WARNFLAGS= -j
|
|
||||||
$Qmv rgbasm win64/rgbasm.exe
|
|
||||||
$Qmv rgblink win64/rgblink.exe
|
|
||||||
$Qmv rgbfix win64/rgbfix.exe
|
|
||||||
$Qmv rgbgfx win64/rgbgfx.exe
|
|
||||||
$Qenv make clean
|
|
||||||
|
|
||||||
# Below is a target for the project maintainer to easily create web manuals.
|
|
||||||
# It relies on mandoc: http://mdocml.bsd.lv
|
# It relies on mandoc: http://mdocml.bsd.lv
|
||||||
MANDOC = -Thtml -Ios=General -Oman=%N.%S.html -Ostyle=manual.css
|
|
||||||
|
MANDOC := -Thtml -Ios=General -Oman=%N.%S.html -Ostyle=manual.css
|
||||||
|
|
||||||
wwwman:
|
wwwman:
|
||||||
$Qmandoc ${MANDOC} src/rgbds.7 > rgbds.7.html
|
$Qmandoc ${MANDOC} src/rgbds.7 > rgbds.7.html
|
||||||
@@ -155,3 +147,24 @@ wwwman:
|
|||||||
$Qmandoc ${MANDOC} src/link/rgblink.1 > rgblink.1.html
|
$Qmandoc ${MANDOC} src/link/rgblink.1 > rgblink.1.html
|
||||||
$Qmandoc ${MANDOC} src/link/rgblink.5 > rgblink.5.html
|
$Qmandoc ${MANDOC} src/link/rgblink.5 > rgblink.5.html
|
||||||
$Qmandoc ${MANDOC} src/gfx/rgbgfx.1 > rgbgfx.1.html
|
$Qmandoc ${MANDOC} src/gfx/rgbgfx.1 > rgbgfx.1.html
|
||||||
|
|
||||||
|
# Targets for the project maintainer to easily create Windows exes.
|
||||||
|
# This is not for Windows users!
|
||||||
|
# If you're building on Windows with Cygwin or Mingw, just follow the Unix
|
||||||
|
# install instructions instead.
|
||||||
|
|
||||||
|
mingw32:
|
||||||
|
$Qenv PKG_CONFIG_PATH=/usr/i686-w64-mingw32/sys-root/mingw/lib/pkgconfig/ \
|
||||||
|
make CC=i686-w64-mingw32-gcc YACC=bison WARNFLAGS= -j
|
||||||
|
$Qmv rgbasm rgbasm.exe
|
||||||
|
$Qmv rgblink rgblink.exe
|
||||||
|
$Qmv rgbfix rgbfix.exe
|
||||||
|
$Qmv rgbgfx rgbgfx.exe
|
||||||
|
|
||||||
|
mingw64:
|
||||||
|
$Qenv PKG_CONFIG_PATH=/usr/x86_64-w64-mingw32/sys-root/mingw/lib/pkgconfig/ \
|
||||||
|
make CC=x86_64-w64-mingw32-gcc YACC=bison WARNFLAGS= -j
|
||||||
|
$Qmv rgbasm rgbasm.exe
|
||||||
|
$Qmv rgblink rgblink.exe
|
||||||
|
$Qmv rgbfix rgbfix.exe
|
||||||
|
$Qmv rgbgfx rgbgfx.exe
|
||||||
|
|||||||
Reference in New Issue
Block a user