# Makefile to build D runtime library libares.a for Linux # Designed to work with GNU make # Targets: # make # Same as make all # make lib # Build libares.a # make doc # Generate documentation # make clean # Delete unneeded files created by build process CP=cp -f RM=rm -f MD=mkdir -p #CFLAGS=-mn -6 -r #CFLAGS=-g -mn -6 -r DFLAGS=-release -O -inline -version=Posix #DFLAGS=-release -O -inline -version=Posix -I. #DFLAGS=-g -release -version=Posix -I. TFLAGS=-O -inline -version=Posix #TFLAGS=-O -inline -version=Posix -I. #TFLAGS=-g -version=Posix -I. DOCFLAGS=-version=DDoc -version=Posix #DOCFLAGS=-version=DDoc -version=Posix -I. CC=gcc LC=$(AR) DC=dmd ARES_DEST=../.. INC_DEST=$(ARES_DEST)/include/ares LIB_DEST=$(ARES_DEST)/lib DOC_DEST=$(ARES_DEST)/doc/ares .SUFFIXES: .asm .c .cpp .d .html .o .asm.o: $(CC) -c $< .c.o: $(CC) -c $(CFLAGS) $< -o$@ .cpp.o: g++ -c $(CFLAGS) $< -o$@ .d.o: $(DC) -c $(DFLAGS) $< -of$@ # $(DC) -c $(DFLAGS) -Hf$*.di $< -of$@ .d.html: $(DC) -c -o- $(DOCFLAGS) -Df$*.html ares.ddoc $< targets : lib doc all : lib doc ares : lib lib : libares.a doc : ares.doc ###################################################### OBJ_STD= \ std/array.o \ std/atomic.o \ std/bitarray.o \ std/exception.o \ std/intrinsic.o \ std/memory.o \ std/regexp.o \ std/vararg.o \ std/thread.o \ std/traits.o \ std/unicode.o OBJ_STD_C= \ std/c/complex.o \ std/c/config.o \ std/c/ctype.o \ std/c/errno.o \ std/c/fenv.o \ std/c/inttypes.o \ std/c/math.o \ std/c/signal.o \ std/c/stdarg.o \ std/c/stdbool.o \ std/c/stddef.o \ std/c/stdint.o \ std/c/stdio.o \ std/c/stdlib.o \ std/c/string.o \ std/c/time.o \ std/c/wctype.o \ std/c/wrap.o OBJ_STD_C_POSIX= \ std/c/posix/dirent.o \ std/c/posix/fcntl.o \ std/c/posix/inttypes.o \ std/c/posix/pthread.o \ std/c/posix/sched.o \ std/c/posix/semaphore.o \ std/c/posix/signal.o \ std/c/posix/time.o \ std/c/posix/ucontext.o \ std/c/posix/unistd.o OBJ_STD_C_POSIX_SYS= \ std/c/posix/sys/mman.o \ std/c/posix/sys/select.o \ std/c/posix/sys/stat.o \ std/c/posix/sys/types.o \ std/c/posix/sys/wait.o OBJ_STD_IO= \ std/io/ArrayAllocator.o \ std/io/Buffer.o \ std/io/Conduit.o \ std/io/Console.o \ std/io/DeviceConduit.o \ std/io/Exception.o \ std/io/FileConduit.o \ std/io/FileConst.o \ std/io/FilePath.o \ std/io/FileProxy.o \ std/io/Reader.o \ std/io/Writer.o OBJ_STD_IO_CONVERT= \ std/io/convert/Type.o \ std/io/convert/Unicode.o OBJ_STD_IO_MODEL= \ std/io/model/IBuffer.o \ std/io/model/IConduit.o \ std/io/model/IReader.o \ std/io/model/IWriter.o OBJ_STD_IO_SYS= \ std/io/sys/OS.o OBJ_STD_IO_UTILS= \ std/io/utils/HeapSlice.o OBJ_STD_MATH= \ std/math/core.o \ std/math/ieee.o \ std/math/special.o OBJ_SYS_LINUX_C= \ sys/linux/c/linux.o \ sys/linux/c/linuxextern.o \ sys/linux/c/socket.o ALL_OBJS= \ $(OBJ_STD) \ $(OBJ_STD_C) \ $(OBJ_STD_C_POSIX) \ $(OBJ_STD_C_POSIX_SYS) \ $(OBJ_STD_IO)\ $(OBJ_STD_IO_CONVERT) \ $(OBJ_STD_IO_MODEL) \ $(OBJ_STD_IO_SYS) \ $(OBJ_STD_IO_UTILS) \ $(OBJ_STD_MATH) \ $(OBJ_SYS_LINUX_C) ###################################################### DOC_STD= \ std/array.html \ std/atomic.html \ std/bitarray.html \ std/exception.html \ std/intrinsic.html \ std/memory.html \ std/regexp.html \ std/thread.html \ std/traits.html \ std/unicode.html \ std/vararg.html DOC_STD_MATH= \ std/math/core.html \ std/math/ieee.html \ std/math/special.html ALL_DOCS= \ $(DOC_STD) \ $(DOC_STD_MATH) ###################################################### libares.a : $(ALL_OBJS) $(RM) $@ $(LC) -r $@ $(ALL_OBJS) ares.doc : $(ALL_DOCS) echo Documentation generated. ###################################################### ### std std/array.o : std/array.d $(DC) -c $(TFLAGS) $< -of$@ std/atomic.o : std/atomic.d $(DC) -c $(TFLAGS) $< -of$@ std/traits.o : std/traits.d $(DC) -c $(TFLAGS) $< -of$@ std/vararg.o : std/vararg.d $(DC) -c $(TFLAGS) $< -of$@ ### std/c std/c/stdarg.o : std/c/stdarg.d $(DC) -c $(TFLAGS) $< -of$@ ###################################################### clean : $(RM) -r *.di $(RM) $(ALL_OBJS) $(RM) libares*.a $(RM) $(ALL_DOCS) install : # $(MD) $(INC_DEST) # $(CP) -r *.di $(INC_DEST)/. $(MD) $(LIB_DEST) $(CP) libares*.a $(LIB_DEST)/. # $(MD) $(DOC_DEST) # $(CP) -r *.html $(DOC_DEST)/.