# OBS! M4 processed!
changequote([, ])
[
CHAIN=growisofs dvd+rw-format dvd+rw-booktype dvd+rw-mediainfo dvd-ram-control
dvd+rw-tools: $(CHAIN)
WARN=#-Wall # developers are welcomed to build with `make WARN=-Wall'
]
# fix-up OS macro
ifelse(substr(OS,0,7),[CYGWIN_],[define([OS],[MINGW32])])
ifelse(substr(OS,0,7),[MINGW32],[define([OS],[MINGW32])])
ifelse(OS,NetBSD,[define([OS],[BSD])CXXFLAGS+=-D__unix])
ifelse(OS,OpenBSD,[define([OS],[BSD])])
ifelse(OS,FreeBSD,[define([OS],[BSD])LDLIBS=-lcam])
ifelse(OS,IRIX64,[define([OS],[IRIX])])
ifelse(OS,Darwin,[
#
# Mac OS X section
#
CC =gcc
CFLAGS +=$(WARN) -D__unix
CXX =g++
CXXFLAGS+=$(WARN) -D__unix -fno-exceptions
LDLIBS =-framework CoreFoundation -framework IOKit
LINK.o =$(LINK.cc)
# to install set-root-uid, `make BIN_MODE=04755 install'...
BIN_MODE?=0755
install: dvd+rw-tools
install -o root -m $(BIN_MODE) $(CHAIN) /usr/bin
install -o root -m 0644 growisofs.1 /usr/share/man/man1
])
ifelse(OS,MINGW32,[
#
# MINGW section
#
CC =gcc
CFLAGS +=$(WARN) -mno-cygwin
CXX =g++
CXXFLAGS+=$(WARN) -mno-cygwin -fno-exceptions
LINK.o =$(LINK.cc)
])
ifelse(OS,BSD,[
#
# OpenBSD/NetBSD/FreeBSD section
#
CC ?=gcc
CFLAGS +=$(WARN) -pthread -D_THREAD_SAFE -D_REENTRANT
CXX ?=g++
CXXFLAGS+=$(WARN) -fno-exceptions -pthread -D_THREAD_SAFE -D_REENTRANT
.SUFFIXES: .c .cpp .o
.c.o:
$(CC) $(CFLAGS) -c -o $@ $<
.cpp.o:
$(CXX) $(CXXFLAGS) -c -o $@ $<
.o: # try to please both BSD vv&vv GNU make at the same time...
$(CXX) $(CXXFLAGS) -o $@ $> $^ $(LDFLAGS) $(LDLIBS)
# yes, default is set-root-uid, `make BIN_MODE=0755 install' to override...
BIN_MODE?=04755
install: dvd+rw-tools
install -o root -m $(BIN_MODE) $(CHAIN) /usr/local/bin
install -o root -m 0644 growisofs.1 /usr/local/man/man1
])
ifelse(OS,SunOS,[
#
# Solaris section
#
.SUFFIXES: .c .cpp .o
# check for WorkShop C++
syscmd([(CC -flags) > /dev/null 2>&1])
ifelse(sysval,0,[
CC =cc
CFLAGS =-O -xstrconst -w -D_REENTRANT
CXX =CC
CXXFLAGS=-O -features=no%except,conststrings -w -D_REENTRANT
],[
CC =gcc
CFLAGS =$(WARN) -D_REENTRANT
CXX =g++
CXXFLAGS=$(WARN) -fno-exceptions -D_REENTRANT
])
LDLIBS=-lvolmgt -lrt -lpthread
.c.o:
$(CC) $(CFLAGS) -c -o $@ $<
.cpp.o:
$(CXX) $(CXXFLAGS) -c -o $@ $<
%: %.o
$(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS) $(LDLIBS)
install: dvd+rw-tools
install -o root -m 04755 $(CHAIN) /usr/local/bin
install -o root -m 0644 growisofs.1 /usr/local/man/man1
])
ifelse(OS,HP-UX,[
#
# HP-UX section
#
.SUFFIXES: .c .cpp .o
# check for HP C++
syscmd([(aCC -E /dev/null) > /dev/null 2>&1])
ifelse(sysval,0,[
# run `make TARGET_ARCH=+DD64' for 64-bit build...
# ... or should we check for `getconf KERNEL_BITS' and/or CPU_VERSION?
# syscmd([([ `getconf KERNEL_BITS` -eq 64 ]) > /dev/null 2>&1])
CC =cc
CFLAGS =$(TARGET_ARCH) -O -D_REENTRANT
CXX =aCC
CXXFLAGS=$(TARGET_ARCH) -O +noeh -D_REENTRANT
],[
CC =gcc
CFLAGS =$(WARN) -D_REENTRANT
CXX =g++
CXXFLAGS=$(WARN) -fno-exceptions -D_REENTRANT
])
LDLIBS=-lrt -lpthread
.c.o:
$(CC) $(CFLAGS) \
-DSCTL_MAJOR=`/usr/sbin/lsdev -h -d sctl | awk '{print$$1}'` \
-c -o $@ $<
.cpp.o:
$(CXX) $(CXXFLAGS) -c -o $@ $<
.o: # try to please both BSD vv&vv GNU make at the same time...
$(CXX) $(CXXFLAGS) -o $@ $> $^ $(LDFLAGS) $(LDLIBS)
install: dvd+rw-tools
/usr/sbin/install -o -f /usr/local/bin $(CHAIN)
/usr/sbin/install -o -f /usr/local/man/man1 growisofs.1
])
ifelse(OS,IRIX,[
#
# IRIX section
#
.SUFFIXES: .c .cpp .o
# check for MIPSpro compiler
syscmd([(CC -version) > /dev/null 2>&1])
ifelse(sysval,0,[
CC =cc
CFLAGS =$(WARN) -O -use_readonly_const -D_SGI_MP_SOURCE
CXX =CC
CXXFLAGS=$(WARN) -O -OPT:Olimit=0 -use_readonly_const -LANG:exceptions=OFF -D_SGI_MP_SOURCE
],[
CC =gcc
CFLAGS =$(WARN) -D_SGI_MP_SOURCE
CXX =g++
CXXFLAGS=$(WARN) -fno-exceptions -D_SGI_MP_SOURCE
])
LDLIBS=-lmediad -lpthread
LDFLAGS=-dont_warn_unused
.c.o:
$(CC) $(CFLAGS) -c -o $@ $<
.cpp.o:
$(CXX) $(CXXFLAGS) -c -o $@ $<
.o:
$(CXX) $(CXXFLAGS) -o $@ $> $^ $(LDFLAGS) $(LDLIBS)
BIN_MODE=04755 # set-root-uid
install: dvd+rw-tools
/sbin/install -u root -m $(BIN_MODE) $(CHAIN) /usr/local/bin
/sbin/install -u root -m 0644 growisofs.1 /usr/local/man/man1
])
ifelse(OS,Linux,[
#
# Linux section
#
CC =gcc
CFLAGS +=$(WARN) -D_REENTRANT
CXX =g++
CXXFLAGS+=$(WARN) -fno-exceptions -D_REENTRANT
LDLIBS =-lpthread
LINK.o =$(LINK.cc)
prefix?=/usr/local
manprefix?=$(shell case $(prefix) in (*/usr/?*) echo $(prefix)/man ;; (*) echo $(prefix)/share/man ;; esac)
bin_mode?=0755 # yes, default is *no* set-uid
minus_o:=$(shell [[ `id -u` == 0 ]] && echo "-o root")
install: dvd+rw-tools
[[ -d $(prefix)/bin ]] || mkdir -p $(prefix)/bin
install $(minus_o) -m $(bin_mode) $(CHAIN) $(prefix)/bin
[[ -d $(manprefix)/man1 ]] || mkdir -p $(manprefix)/man1
install $(minus_o) -m 0644 growisofs.1 $(manprefix)/man1
-[[ -f rpl8 ]] && install $(minus_o) -m $(bin_mode) rpl8 $(prefix)/bin; :
-[[ -f btcflash ]] && install $(minus_o) -m $(bin_mode) btcflash $(prefix)/bin; :
])
# common section
[
growisofs: growisofs_mmc.o growisofs.o
growisofs.o: growisofs.c mp.h
growisofs_mmc.o: growisofs_mmc.cpp transport.hxx
dvd+rw-format: dvd+rw-format.o
dvd+rw-format.o: dvd+rw-format.cpp transport.hxx
dvd+rw-mediainfo: dvd+rw-mediainfo.o
dvd+rw-mediainfo.o: dvd+rw-mediainfo.cpp transport.hxx
dvd+rw-booktype: dvd+rw-booktype.o
dvd+rw-booktype.o: dvd+rw-booktype.cpp transport.hxx
dvd-ram-control: dvd-ram-control.o
dvd-ram-control.o: dvd-ram-control.cpp transport.hxx
rpl8: rpl8.o
rpl8.o: rpl8.cpp transport.hxx
+rpl8: rpl8
#so that I can invoke `make +rpl8' to build rpl8...
btcflash: btcflash.o
btcflash.o: btcflash.cpp transport.hxx
+btcflash: btcflash
#so that I can invoke `make +btcflash' to build btcflash...
]
syntax highlighted by Code2HTML, v. 0.9.1