diff runtime/lib/llvmdc-posix.mak @ 443:44f08170f4ef

Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn. Reworked the LLVMDC specific pragmas.
author Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
date Fri, 01 Aug 2008 00:32:06 +0200
parents
children 2b28fd92bab8
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/runtime/lib/llvmdc-posix.mak	Fri Aug 01 00:32:06 2008 +0200
@@ -0,0 +1,104 @@
+# Makefile to build the composite D runtime library for Linux
+# Designed to work with GNU make
+# Targets:
+#	make
+#		Same as make all
+#	make lib
+#		Build the runtime library
+#   make doc
+#       Generate documentation
+#	make clean
+#		Delete unneeded files created by build process
+
+LIB_TARGET=libtango-base-llvmdc.a
+LIB_MASK=libtango-base-llvmdc*.a
+LIB_TARGET_C=libtango-base-c-llvmdc.a
+LIB_MASK_C=libtango-base-c-llvmdc*.a
+LIB_NAME_NATIVE=libtango-base-llvmdc-native
+LIB_TARGET_NATIVE=$(LIB_NAME_NATIVE).a
+
+DIR_CC=./common/tango
+DIR_RT=../../runtime/internal
+DIR_GC=./gc/basic
+#DIR_GC=./gc/stub
+
+CP=cp -f
+RM=rm -f
+MD=mkdir -p
+
+CC=gcc
+LC=llvm-ar rsv
+CLC=ar rsv
+DC=llvmdc
+LLVMLINK=llvm-link
+LLC=llc
+
+ADD_CFLAGS=
+#ADD_DFLAGS=
+ADD_DFLAGS=-I`pwd`/common -I`pwd`/.. -I`pwd`/compiler/llvmdc
+
+targets : nativelib doc
+all     : nativelib lib doc
+
+######################################################
+
+ALL_OBJS=
+
+######################################################
+
+ALL_DOCS=
+
+######################################################
+
+lib : $(ALL_OBJS)
+	make -C $(DIR_CC) -fllvmdc.mak lib DC=$(DC) ADD_DFLAGS="$(ADD_DFLAGS)" ADD_CFLAGS="$(ADD_CFLAGS)"
+	make -C $(DIR_RT) -fllvmdc.mak lib
+	make -C $(DIR_GC) -fllvmdc.mak lib DC=$(DC) ADD_DFLAGS="$(ADD_DFLAGS)" ADD_CFLAGS="$(ADD_CFLAGS)"
+	find . -name $(LIB_MASK) | xargs $(RM)
+	$(LC) $(LIB_TARGET) `find $(DIR_CC) -name "*.bc" | xargs echo`
+	$(LC) $(LIB_TARGET) `find $(DIR_RT) -name "*.bc" | xargs echo`
+	$(LC) $(LIB_TARGET) `find $(DIR_GC) -name "*.bc" | xargs echo`
+	$(CLC) $(LIB_TARGET_C) `find $(DIR_CC) -name "*.o" | xargs echo`
+	$(CLC) $(LIB_TARGET_C) `find $(DIR_RT) -name "*.o" | xargs echo`
+
+nativelib: $(ALL_OBJS)
+	make -C $(DIR_CC) -fllvmdc.mak lib DC=$(DC) ADD_DFLAGS="$(ADD_DFLAGS)" ADD_CFLAGS="$(ADD_CFLAGS)"
+	make -C $(DIR_RT) -fllvmdc.mak lib
+	make -C $(DIR_GC) -fllvmdc.mak lib DC=$(DC) ADD_DFLAGS="$(ADD_DFLAGS)" ADD_CFLAGS="$(ADD_CFLAGS)"
+
+	$(RM) $(LIB_NAME_NATIVE)*
+
+	# first link all bcs together to a single bitcode file
+	$(LLVMLINK) -o=$(LIB_NAME_NATIVE)-llvm.bc `find $(DIR_CC) $(DIR_RT) $(DIR_GC) -name "*.bc"`
+	# then compile to assembler
+	$(LLC) -o=$(LIB_NAME_NATIVE)-llvm.s $(LIB_NAME_NATIVE)-llvm.bc
+	# assemble native code
+	$(CC) -c -o $(LIB_NAME_NATIVE)-llvm.o $(LIB_NAME_NATIVE)-llvm.s
+	# make an archive containing it and the other native object files
+	$(CLC) $(LIB_TARGET_NATIVE) $(LIB_NAME_NATIVE)-llvm.o `find $(DIR_CC) $(DIR_RT) -name "*.o"`
+	
+
+doc : $(ALL_DOCS)
+	make -C $(DIR_CC) -fllvmdc.mak doc
+	make -C $(DIR_RT) -fllvmdc.mak doc
+	make -C $(DIR_GC) -fllvmdc.mak doc
+
+######################################################
+
+clean :
+	find . -name "*.di" | xargs $(RM)
+	$(RM) $(ALL_OBJS)
+	$(RM) $(ALL_DOCS)
+	make -C $(DIR_CC) -fllvmdc.mak clean
+	make -C $(DIR_RT) -fllvmdc.mak clean
+	make -C $(DIR_GC) -fllvmdc.mak clean
+	$(RM) $(LIB_MASK)
+	$(RM) $(LIB_MASK_C)
+	$(RM) $(LIB_NAME_NATIVE)*
+
+install :
+	make -C $(DIR_CC) -fllvmdc.mak install
+	make -C $(DIR_RT) -fllvmdc.mak install
+	make -C $(DIR_GC) -fllvmdc.mak install
+	$(CP) $(LIB_MASK) $(LIB_DEST)/.
+	$(CP) $(LIB_MASK_C) $(LIB_DEST)/.