Blame | Last modification | View Log | Download | RSS feed
# -------------------------------------------------------------------------# This is the Makefile.def I currently use on my own Debian systems. It# provides cross build for Linux 32 bit, Windows, optional Valgrind testing# and PPC/M68K cross compiling/emulation to test on a big endian host:# any additionally needed flagsCFLAGS_COMMON = -g -O3 -fomit-frame-pointer -Wall -Wundef -Wextra -Werror -pedantic -Wshift-count-overflowCFLAGS_C = -Wstrict-prototypesCFLAGS_GCC_EXTRA = -Wshift-overflow=2CFLAGS_CLANG_EXTRA = -Wshift-overflowCFLAGS_CLANGPP_EXTRA = -Wshift-overflow -Wno-deprecated -Wno-keyword-macroCFLAGS_TCC_EXTRA = -Wshift-overflow=2# leave this out by default, because it prohibits use of long long and long double data types:#CFLAGS_CVER = -ansi -std=c89#CFLAGS_CPPVER = -ansi -std=c++98CFLAGS_GCC = $(CFLAGS_COMMON) $(CFLAGS_C) $(CFLAGS_GCC_EXTRA) $(CFLAGS_CVER)CFLAGS_CLANG = $(CFLAGS_COMMON) $(CFLAGS_C) $(CFLAGS_CLANG_EXTRA) $(CFLAGS_CVER)CFLAGS_GPP = $(CFLAGS_COMMON) $(CFLAGS_GCC_EXTRA) $(CFLAGS_CPPVER)CFLAGS_CLANGPP = $(CFLAGS_COMMON) $(CFLAGS_CLANGPP_EXTRA) $(CFLAGS_CPPVER)CFLAGS_TCC = $(CFLAGS_COMMON) $(CFLAGS_C) $(CFLAGS_TCC_EXTRA) $(CFLAGS_CVER)CFLAGS_ASAN = -fsanitize=address -static-libasanLDFLAGS_ASAN = $(CFLAGS_ASAN)# ...for host-side build tools:OBJDIR =CC = gccCFLAGS = $(CFLAGS_GCC)HOST_OBJEXTENSION = .oLDFLAGS =LD = $(CC)HOST_EXEXTENSION =# Here I select the target. Object directories have to exist *before* build:TARG_OBJDIR ?= i686-linux/#TARG_OBJDIR ?= ppc-linux/#TARG_OBJDIR ?= m68k-linux/#TARG_OBJDIR ?= i686-w32/# ...for the actual build targets. This is the simple case for no cross-build:ifeq ($(TARG_OBJDIR),i686-linux/)TARG_CC = gccTARG_CFLAGS = $(CFLAGS_GCC)#TARG_CC = clang#TARG_CFLAGS = $(CFLAGS_CLANG)#TARG_CC = g++#TARG_CFLAGS = $(CFLAGS_GPP)#TARG_CC = clang++#TARG_CFLAGS = $(CFLAGS_CLANGPP)#TARG_CC = tcc#TARG_CFLAGS = $(CFLAGS_TCC)TARG_OBJEXTENSION = $(HOST_OBJEXTENSION)TARG_LD = $(TARG_CC)TARG_LDFLAGS = $(LDFLAGS)TARG_EXEXTENSION = $(HOST_EXEXTENSION)ifeq ($(VALGRIND),1)TARG_RUNCMD = "valgrind --leak-check=full"endifendif# ASAN requires compilation & linking with different flags:ifeq ($(TARG_OBJDIR),i686-linux-asan/)TARG_CC = gccTARG_CFLAGS = $(CFLAGS_ASAN) $(CFLAGS_GCC)TARG_OBJEXTENSION = .oTARG_LD = $(TARG_CC)TARG_LDFLAGS = $(LDFLAGS_ASAN) $(LDFLAGS)TARG_EXEXTENSION =endif# PPC build to test big endian# install qemu-system-ppc, qemu-user-static, gcc-powerpc(64)-linux-gnu, libc6-dev-ppc64-powerpc-crossifeq ($(TARG_OBJDIR),ppc-linux/)TARG_CC = powerpc-linux-gnu-gccTARG_CFLAGS = $(CFLAGS_GCC)TARG_OBJEXTENSION = .oTARG_LD = $(TARG_CC)TARG_LDFLAGS = $(LDFLAGS) -staticTARG_EXEXTENSION =TARG_RUNCMD = qemu-ppc-staticendif# Similar for M68Kifeq ($(TARG_OBJDIR),m68k-linux/)TARG_CC = m68k-linux-gnu-gccTARG_CFLAGS = $(CFLAGS_GCC)TARG_OBJEXTENSION = .oTARG_LD = $(TARG_CC)TARG_LDFLAGS = $(LDFLAGS) -staticTARG_EXEXTENSION =TARG_RUNCMD = qemu-m68k-staticendif# cross Build with MinGW32ifeq ($(TARG_OBJDIR),i686-w32/)TARG_CC = i686-w64-mingw32-gccTARG_CFLAGS = $(CFLAGS_GCC)TARG_OBJEXTENSION = .oTARG_LD = $(TARG_CC)TARG_LDFLAGS = $(LDFLAGS)TARG_EXEXTENSION = .exeTARG_RUNCMD = wineTEX2DOC_FLAGS=-codepage 1252endif# -------------------------------------------------------------------------# directories where binaries, includes, and manpages should go during# installationBINDIR = /usr/local/binINCDIR = /usr/local/include/aslMANDIR = /usr/local/manLIBDIR =DOCDIR = /usr/local/doc/asl