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