|
Packit Service |
8bf002 |
# makefile to compile MCPP version 2.7.2 for FreeBSD / GCC / UCB make
|
|
Packit Service |
8bf002 |
# 2008/11 kmatsui
|
|
Packit Service |
8bf002 |
#
|
|
Packit Service |
8bf002 |
# First, you must edit GCCDIR, BINDIR, INCDIR, gcc_maj_ver and gcc_min_ver.
|
|
Packit Service |
8bf002 |
# To make compiler-independent-build of MCPP do:
|
|
Packit Service |
8bf002 |
# make
|
|
Packit Service |
8bf002 |
# make install
|
|
Packit Service |
8bf002 |
# To make GCC-specific-build of MCPP do:
|
|
Packit Service |
8bf002 |
# make COMPILER=GNUC
|
|
Packit Service |
8bf002 |
# make COMPILER=GNUC install
|
|
Packit Service |
8bf002 |
# To re-compile MCPP using GCC-specific-build of MCPP do:
|
|
Packit Service |
8bf002 |
# make COMPILER=GNUC PREPROCESSED=1
|
|
Packit Service |
8bf002 |
# make COMPILER=GNUC PREPROCESSED=1 install
|
|
Packit Service |
8bf002 |
# To link malloc() package of kmatsui do:
|
|
Packit Service |
8bf002 |
# make [COMPILER=GNUC] [PREPROCESSED=1] MALLOC=KMMALLOC
|
|
Packit Service |
8bf002 |
# make [COMPILER=GNUC] [PREPROCESSED=1] MALLOC=KMMALLOC install
|
|
Packit Service |
8bf002 |
# To make libmcpp (subroutine build of mcpp):
|
|
Packit Service |
8bf002 |
# make MCPP_LIB=1 mcpplib
|
|
Packit Service |
8bf002 |
# make MCPP_LIB=1 mcpplib_install
|
|
Packit Service |
8bf002 |
# To make testmain using libmcpp:
|
|
Packit Service |
8bf002 |
# make [OUT2MEM=1] testmain
|
|
Packit Service |
8bf002 |
# make [OUT2MEM=1] testmain_install
|
|
Packit Service |
8bf002 |
# It usually needs root privilege to do 'make *install'.
|
|
Packit Service |
8bf002 |
|
|
Packit Service |
8bf002 |
# COMPILER:
|
|
Packit Service |
8bf002 |
# Specify whether make a compiler-independent-build or GCC-specific-build
|
|
Packit Service |
8bf002 |
# compiler-independent-build: empty
|
|
Packit Service |
8bf002 |
# compiler-specific-build: GNUC
|
|
Packit Service |
8bf002 |
|
|
Packit Service |
8bf002 |
# NAME: name of mcpp executable
|
|
Packit Service |
8bf002 |
NAME ?= mcpp
|
|
Packit Service |
8bf002 |
CC = gcc
|
|
Packit Service |
8bf002 |
CXX = g++
|
|
Packit Service |
8bf002 |
CFLAGS = -c -O2 -Wall # -ggdb -v
|
|
Packit Service |
8bf002 |
# for gcc 4.1 or later (Don't use this option to compile libmcpp)
|
|
Packit Service |
8bf002 |
#CFLAGS += -fstack-protector
|
|
Packit Service |
8bf002 |
CPPFLAGS =
|
|
Packit Service |
8bf002 |
#CPPFLAGS = -Wp,-v,-Q,-W3
|
|
Packit Service |
8bf002 |
# for MCPP to output a bit verbose diagnosis to "mcpp.err"
|
|
Packit Service |
8bf002 |
|
|
Packit Service |
8bf002 |
LINKFLAGS = -o $(NAME)
|
|
Packit Service |
8bf002 |
# for gcc 4.1 or later (Don't use this option to compile libmcpp)
|
|
Packit Service |
8bf002 |
#LINKFLAGS += -fstack-protector
|
|
Packit Service |
8bf002 |
|
|
Packit Service |
8bf002 |
.if empty(COMPILER)
|
|
Packit Service |
8bf002 |
# compiler-independent-build
|
|
Packit Service |
8bf002 |
CPPOPTS =
|
|
Packit Service |
8bf002 |
# BINDIR: directory to install mcpp: /usr/bin or /usr/local/bin
|
|
Packit Service |
8bf002 |
BINDIR = /usr/local/bin
|
|
Packit Service |
8bf002 |
# INCDIR: directory to install mcpp_lib.h, mcpp_out.h for libmcpp
|
|
Packit Service |
8bf002 |
INCDIR = /usr/local/include
|
|
Packit Service |
8bf002 |
|
|
Packit Service |
8bf002 |
.else
|
|
Packit Service |
8bf002 |
# compiler-specific-build: Adjust for your system
|
|
Packit Service |
8bf002 |
|
|
Packit Service |
8bf002 |
.if ! empty(COMPILER) && $(COMPILER) == GNUC
|
|
Packit Service |
8bf002 |
# The directory 'gcc' (cc) command is located (/usr/bin or /usr/local/bin)
|
|
Packit Service |
8bf002 |
GCCDIR ?= /usr/bin
|
|
Packit Service |
8bf002 |
# Set GCC version
|
|
Packit Service |
8bf002 |
gcc_maj_ver = 3
|
|
Packit Service |
8bf002 |
gcc_min_ver = 4
|
|
Packit Service |
8bf002 |
# INCDIR: the compiler's version specific include directory, if it exists,
|
|
Packit Service |
8bf002 |
# /usr/local/include or /usr/include, if it does not exist
|
|
Packit Service |
8bf002 |
INCDIR = /usr/local/include
|
|
Packit Service |
8bf002 |
#INCDIR ?= /usr/local/gcc-4.1.1/lib/gcc-lib/i386-unknown-freebsd6.3/4.1.1/include
|
|
Packit Service |
8bf002 |
CPPOPTS = -DCOMPILER=$(COMPILER) -DINC_DIR=\"$(INCDIR)\"
|
|
Packit Service |
8bf002 |
|
|
Packit Service |
8bf002 |
# BINDIR: the directory where cpp0 or cc1 resides
|
|
Packit Service |
8bf002 |
BINDIR ?= /usr/libexec
|
|
Packit Service |
8bf002 |
#BINDIR ?= /usr/local/gcc-4.1.1/lib/gcc-lib/i386-unknown-freebsd6.3/4.1.1
|
|
Packit Service |
8bf002 |
cpu = i386
|
|
Packit Service |
8bf002 |
#cpu = x86_64
|
|
Packit Service |
8bf002 |
#cpu = ppc
|
|
Packit Service |
8bf002 |
#cpu = ppc64
|
|
Packit Service |
8bf002 |
.if $(gcc_maj_ver) == 2
|
|
Packit Service |
8bf002 |
cpp_call = $(BINDIR)/cpp0
|
|
Packit Service |
8bf002 |
.else
|
|
Packit Service |
8bf002 |
cpp_call = $(BINDIR)/cc1
|
|
Packit Service |
8bf002 |
.endif
|
|
Packit Service |
8bf002 |
.endif
|
|
Packit Service |
8bf002 |
.endif
|
|
Packit Service |
8bf002 |
|
|
Packit Service |
8bf002 |
MALLOC =
|
|
Packit Service |
8bf002 |
.if !empty(MALLOC)
|
|
Packit Service |
8bf002 |
.if $(MALLOC) == KMMALLOC
|
|
Packit Service |
8bf002 |
LINKFLAGS += -L/usr/local/lib -lkmmalloc_debug
|
|
Packit Service |
8bf002 |
MEM_MACRO = -D_MEM_DEBUG -DXMALLOC -I/usr/local/include
|
|
Packit Service |
8bf002 |
.endif
|
|
Packit Service |
8bf002 |
MEM_MACRO += -D$(MALLOC)
|
|
Packit Service |
8bf002 |
.else
|
|
Packit Service |
8bf002 |
MEM_MACRO =
|
|
Packit Service |
8bf002 |
.endif
|
|
Packit Service |
8bf002 |
|
|
Packit Service |
8bf002 |
OBJS = main.o directive.o eval.o expand.o support.o system.o mbchar.o
|
|
Packit Service |
8bf002 |
|
|
Packit Service |
8bf002 |
all : $(NAME)
|
|
Packit Service |
8bf002 |
$(NAME) : $(OBJS)
|
|
Packit Service |
8bf002 |
$(CC) $(OBJS) $(LINKFLAGS)
|
|
Packit Service |
8bf002 |
|
|
Packit Service |
8bf002 |
PREPROCESSED ?= 0
|
|
Packit Service |
8bf002 |
|
|
Packit Service |
8bf002 |
.if $(PREPROCESSED) == 1
|
|
Packit Service |
8bf002 |
CMACRO = -DPREPROCESSED
|
|
Packit Service |
8bf002 |
# Make a "pre-preprocessed" header file to recompile MCPP with MCPP.
|
|
Packit Service |
8bf002 |
mcpp.H : system.H noconfig.H internal.H
|
|
Packit Service |
8bf002 |
.if ! empty(COMPILER) && $(COMPILER) == GNUC
|
|
Packit Service |
8bf002 |
$(CC) -E -Wp,-b $(CPPFLAGS) $(CPPOPTS) $(MEM_MACRO) -o mcpp.H preproc.c
|
|
Packit Service |
8bf002 |
.else
|
|
Packit Service |
8bf002 |
@echo "Do 'sudo make COMPILER=GNUC install' prior to recompile."
|
|
Packit Service |
8bf002 |
@echo "Then, do 'make COMPILER=GNUC PREPROCESSED=1'."
|
|
Packit Service |
8bf002 |
@exit
|
|
Packit Service |
8bf002 |
.endif
|
|
Packit Service |
8bf002 |
$(OBJS) : mcpp.H
|
|
Packit Service |
8bf002 |
.else
|
|
Packit Service |
8bf002 |
CMACRO = $(MEM_MACRO) $(CPPOPTS)
|
|
Packit Service |
8bf002 |
$(OBJS) : noconfig.H
|
|
Packit Service |
8bf002 |
main.o directive.o eval.o expand.o support.o system.o mbchar.o: \
|
|
Packit Service |
8bf002 |
system.H internal.H
|
|
Packit Service |
8bf002 |
.endif
|
|
Packit Service |
8bf002 |
|
|
Packit Service |
8bf002 |
.c.o :
|
|
Packit Service |
8bf002 |
$(CC) $(CFLAGS) $(CMACRO) $(CPPFLAGS) $<
|
|
Packit Service |
8bf002 |
|
|
Packit Service |
8bf002 |
install :
|
|
Packit Service |
8bf002 |
install -s $(NAME) $(BINDIR)/$(NAME)
|
|
Packit Service |
8bf002 |
.if ! empty(COMPILER) && $(COMPILER) == GNUC
|
|
Packit Service |
8bf002 |
@./set_mcpp.sh '$(GCCDIR)' '$(gcc_maj_ver)' '$(gcc_min_ver)' \
|
|
Packit Service |
8bf002 |
'$(cpp_call)' '$(CC)' '$(CXX)' 'x$(CPPFLAGS)' 'x' 'ln -s' \
|
|
Packit Service |
8bf002 |
'$(INCDIR)' SYS_FREEBSD $(cpu)
|
|
Packit Service |
8bf002 |
.endif
|
|
Packit Service |
8bf002 |
|
|
Packit Service |
8bf002 |
clean :
|
|
Packit Service |
8bf002 |
-rm *.o *.so $(NAME) mcpp.H mcpp.err libmcpp.*
|
|
Packit Service |
8bf002 |
|
|
Packit Service |
8bf002 |
uninstall:
|
|
Packit Service |
8bf002 |
rm -f $(BINDIR)/$(NAME)
|
|
Packit Service |
8bf002 |
.if ! empty(COMPILER) && $(COMPILER) == GNUC
|
|
Packit Service |
8bf002 |
@./unset_mcpp.sh '$(GCCDIR)' '$(gcc_maj_ver)' '$(gcc_min_ver)' \
|
|
Packit Service |
8bf002 |
'$(cpp_call)' '$(CC)' '$(CXX)' 'x' 'ln -s' '$(INCDIR)' SYS_FREEBSD
|
|
Packit Service |
8bf002 |
.endif
|
|
Packit Service |
8bf002 |
|
|
Packit Service |
8bf002 |
.if empty(COMPILER)
|
|
Packit Service |
8bf002 |
.if ! empty(MCPP_LIB) && $(MCPP_LIB) == 1
|
|
Packit Service |
8bf002 |
# compiler-independent-build and MCPP_LIB is specified:
|
|
Packit Service |
8bf002 |
CFLAGS += -DMCPP_LIB
|
|
Packit Service |
8bf002 |
LIBDIR = /usr/local/lib
|
|
Packit Service |
8bf002 |
|
|
Packit Service |
8bf002 |
mcpplib : mcpplib_a mcpplib_so
|
|
Packit Service |
8bf002 |
|
|
Packit Service |
8bf002 |
mcpplib_a: $(OBJS)
|
|
Packit Service |
8bf002 |
ar -rv libmcpp.a $(OBJS)
|
|
Packit Service |
8bf002 |
|
|
Packit Service |
8bf002 |
# shared library
|
|
Packit Service |
8bf002 |
# mcpp 2.6.*: 0, mcpp 2.7: 1, mcpp 2.7.1: 2, mcpp 2.7.2: 3
|
|
Packit Service |
8bf002 |
CUR = 3
|
|
Packit Service |
8bf002 |
# mcpp 2.6.3: 0, mcpp 2.6.4: 1, mcpp 2.7, 2.7.1, 2.7.2: 0
|
|
Packit Service |
8bf002 |
REV = 0
|
|
Packit Service |
8bf002 |
# mcpp 2.6.*: 0, mcpp 2.7: 1, mcpp 2.7.1: 2, mcpp 2.7.2: 3
|
|
Packit Service |
8bf002 |
AGE = 3
|
|
Packit Service |
8bf002 |
SHLIB_VER = 0.$(CUR).$(REV)
|
|
Packit Service |
8bf002 |
SOBJS = main.so directive.so eval.so expand.so support.so system.so mbchar.so
|
|
Packit Service |
8bf002 |
.SUFFIXES: .so
|
|
Packit Service |
8bf002 |
.c.so :
|
|
Packit Service |
8bf002 |
$(CC) $(CFLAGS) $(MEM_MACRO) -c -fpic -o $*.so $*.c
|
|
Packit Service |
8bf002 |
mcpplib_so: $(SOBJS)
|
|
Packit Service |
8bf002 |
$(CC) -shared -o libmcpp.so.$(SHLIB_VER) $(SOBJS) # -fstack-protector
|
|
Packit Service |
8bf002 |
chmod a+x libmcpp.so.$(SHLIB_VER)
|
|
Packit Service |
8bf002 |
|
|
Packit Service |
8bf002 |
mcpplib_install:
|
|
Packit Service |
8bf002 |
cp libmcpp.a libmcpp.so.$(SHLIB_VER) $(LIBDIR)
|
|
Packit Service |
8bf002 |
ranlib $(LIBDIR)/libmcpp.a
|
|
Packit Service |
8bf002 |
ln -sf libmcpp.so.$(SHLIB_VER) $(LIBDIR)/libmcpp.so
|
|
Packit Service |
8bf002 |
ln -sf libmcpp.so.$(SHLIB_VER) $(LIBDIR)/libmcpp.so.$(CUR)
|
|
Packit Service |
8bf002 |
# You should do 'ldconfig' as a root after install.
|
|
Packit Service |
8bf002 |
cp mcpp_lib.h mcpp_out.h $(INCDIR)
|
|
Packit Service |
8bf002 |
$(CC) -o $(NAME) main_libmcpp.c -l $(NAME)
|
|
Packit Service |
8bf002 |
install -s $(NAME) $(BINDIR)
|
|
Packit Service |
8bf002 |
|
|
Packit Service |
8bf002 |
mcpplib_uninstall:
|
|
Packit Service |
8bf002 |
rm -f $(LIBDIR)/libmcpp.a $(LIBDIR)/libmcpp.so.$(SHLIB_VER) $(LIBDIR)/libmcpp.so.$(CUR) $(LIBDIR)/libmcpp.so
|
|
Packit Service |
8bf002 |
rm -f $(BINDIR)/$(NAME)
|
|
Packit Service |
8bf002 |
rm -f $(INCDIR)/mcpp*
|
|
Packit Service |
8bf002 |
.endif
|
|
Packit Service |
8bf002 |
|
|
Packit Service |
8bf002 |
# use mcpp as a subroutine from testmain.c
|
|
Packit Service |
8bf002 |
.if ! empty(OUT2MEM) && $(OUT2MEM) == 1
|
|
Packit Service |
8bf002 |
# output to memory buffer
|
|
Packit Service |
8bf002 |
CFLAGS += -DOUT2MEM
|
|
Packit Service |
8bf002 |
.endif
|
|
Packit Service |
8bf002 |
TMAIN_LINKFLAGS = testmain.o -o testmain -L /usr/local/lib -l $(NAME)
|
|
Packit Service |
8bf002 |
.if ! empty(MALLOC) && $(MALLOC) == KMMALLOC
|
|
Packit Service |
8bf002 |
TMAIN_LINKFLAGS += -l kmmalloc_debug
|
|
Packit Service |
8bf002 |
.endif
|
|
Packit Service |
8bf002 |
testmain : testmain.o
|
|
Packit Service |
8bf002 |
$(CC) $(TMAIN_LINKFLAGS)
|
|
Packit Service |
8bf002 |
testmain_install :
|
|
Packit Service |
8bf002 |
install -s testmain $(BINDIR)/testmain
|
|
Packit Service |
8bf002 |
testmain_uninstall :
|
|
Packit Service |
8bf002 |
rm -f $(BINDIR)/testmain
|
|
Packit Service |
8bf002 |
.endif
|
|
Packit Service |
8bf002 |
|