1# makefile to compile MCPP version 2.7.1 and later for Borland C / BC make
2#       2008/11 kmatsui
3# You must first edit BINDIR, INCDIR, LIBDIR and LINKER according to your
4#		system.
5# To make compiler-independent-build of MCPP do:
6#       make
7#       make install
8# To make Borland-C-specific-build of MCPP do:
9#       make -DCOMPILER=BORLANDC
10#       make -DCOMPILER=BORLANDC install
11# To re-compile MCPP using Borland-C-specific-build of MCPP do:
12#       make -DCOMPILER=BORLANDC -DPREPROCESSED
13#       make -DCOMPILER=BORLANDC -DPREPROCESSED install
14# To link kmmalloc V.2.5.1 (malloc() package of kmatsui) or later do:
15#       make [-DPREPROCESSED] -DKMMALLOC
16#       make [-DPREPROCESSED] -DKMMALLOC install
17# To make mcpp.lib (subroutine-build of mcpp) do:
18#       make -DMCPP_LIB mcpplib
19#       make -DMCPP_LIB mcpplib_install
20# To make testmain.c (sample to use mcpp.lib) against mcpp.lib do
21#   (add '-DDLL_IMPORT' to link against the DLL):
22#       make [-DOUT2MEM] testmain
23#       make [-DOUT2MEM] testmain_install
24
25NAME = mcpp
26
27CC = bcc32
28CFLAGS = $(CFLAGS) -c -a -d -f- -G -5 -DWIN32
29	# -DWIN32 is nessecary to compile with bcc32
30LINKFLAGS = -e$(NAME)
31
32!if		$d( COMPILER)
33CPPFLAGS = -DCOMPILER=BORLANDC
34# BINDIR : Adjust to your system.
35#	for Borland C V.5.5
36CFLAGS = $(CFLAGS) -Oi
37BINDIR = \PUB\COMPILERS\BCC55\BIN
38!else
39BINDIR = \PUB\BIN
40!endif
41
42!if 	$d( KMMALLOC)
43MEM_MACRO = -DKMMALLOC=1 -D_MEM_DEBUG=1 -DXMALLOC=1
44MEMLIB = kmmalloc_debug32.lib
45!else
46MEM_MACRO =
47MEM_LIB =
48!endif
49
50OBJS = main.obj directive.obj eval.obj expand.obj support.obj system.obj  \
51		mbchar.obj
52
53all:	$(NAME).exe
54
55$(NAME).exe : $(OBJS)
56	$(CC) $(LINKFLAGS) $(OBJS) $(MEMLIB)
57
58!if 	$d( PREPROCESSED)
59# Make a "pre-preprocessed" header file to recompile MCPP with MCPP.
60mcpp.H	: system.H noconfig.H internal.H
61	$(BINDIR)\$(NAME) $(CPPFLAGS) $(MEM_MACRO) preproc.c mcpp.H
62$(OBJS) : mcpp.H
63!else
64main.obj directive.obj eval.obj expand.obj support.obj system.obj mbchar.obj: \
65		system.H internal.H noconfig.H
66!endif
67
68!if 	$d( PREPROCESSED)
69.c.obj	:
70	$(BINDIR)\$(NAME) -DPREPROCESSED=1 $(CPPFLAGS) $< $(<B).i
71	$(CC) $(CFLAGS) $(<B).i
72!else
73.c.obj	:
74	$(CC) $(CFLAGS) $(CPPFLAGS) $(MEM_MACRO) $<
75!endif
76
77install :
78	copy /b $(NAME).exe $(BINDIR)\$(NAME).exe
79
80clean	:
81	-del *.obj *.exe *.bak mcpp.H *.i *.tds *.lib *.dll mcpp$(DLL_VER).* *.so
82
83!if 	$d( MCPP_LIB)
84# subroutine-build
85CFLAGS = $(CFLAGS) -DMCPP_LIB=1
86LIBDIR = \PUB\COMPILERS\BCC55\LIB
87INCDIR = \PUB\COMPILERS\BCC55\INCLUDE
88LINKER = ilink32
89ADD_OBJS = +main +directive +eval +expand +support +system +mbchar
90
91mcpplib:	mcpplib_lib mcpplib_dll
92
93mcpplib_lib:	$(OBJS)
94	tlib mcpp.lib $(ADD_OBJS)
95
96# DLL
97DLL_VER = 0
98SOBJS = main.so directive.so eval.so expand.so support.so system.so mbchar.so
99.SUFFIXES: .so
100.c.so   :
101	$(CC) $(CFLAGS) $(MEM_MACRO) -DDLL_EXPORT=1 -o$*.so $<
102mcpplib_dll: $(SOBJS)
103	$(LINKER) -Tpd c0d32.obj $(SOBJS), mcpp$(DLL_VER).dll, , \
104            cw32.lib import32.lib $(MEMLIB)
105	implib mcpp$(DLL_VER).lib mcpp$(DLL_VER).dll
106
107mcpplib_install:
108	copy mcpp.lib $(LIBDIR)
109	copy mcpp$(DLL_VER).lib $(LIBDIR)
110	copy mcpp$(DLL_VER).dll $(BINDIR)
111	copy mcpp_lib.h $(INCDIR)
112	copy mcpp_out.h $(INCDIR)
113	$(CC) -e$(NAME).exe main_libmcpp.c mcpp$(DLL_VER).lib
114	copy $(NAME).exe $(BINDIR)
115
116mcpplib_uninstall:
117	del $(LIBDIR)\mcpp.lib $(LIBDIR)\mcpp$(DLL_VER).lib \
118            $(BINDIR)\mcpp$(DLL_VER).dll
119	del $(BINDIR)\$(NAME).exe
120	del $(INCDIR)\mcpp*
121!endif
122
123# use mcpp as a subroutine from testmain.c
124!if	$d( DLL_IMPORT)
125CFLAGS = $(CFLAGS) -DDLL_IMPORT=1
126LINKLIB = mcpp$(DLL_VER).lib
127!else
128LINKLIB = mcpp.lib
129!endif
130!if    $d( OUT2MEM)
131# output to memory buffer
132CFLAGS = $(CFLAGS) -DOUT2MEM=1
133!endif
134TMAIN_LINKFLAGS = testmain.obj -etestmain.exe $(LINKLIB)
135testmain	:	testmain.obj
136	$(CC) $(TMAIN_LINKFLAGS)
137testmain_install	:
138	copy testmain.exe $(BINDIR)
139testmain_uninstall	:
140	del $(BINDIR)\testmain.exe
141