view tests/testincludes/Makefile @ 1499:df11cdec45a2

Another shot at fixing the issues with (constant) struct literals and their addresses. See DMD2682, #218, #324. The idea is to separate the notion of const from 'this variable can always be replaced with its initializer' in the frontend. To do that, I introduced Declaration::isSameAsInitializer, which is overridden in VarDeclaration to return false for constants that have a struct literal initializer. So {{{ const S s = S(5); void foo() { auto ps = &s; } // is no longer replaced by void foo() { auto ps = &(S(5)); } }}} To make taking the address of a struct constant with a struct-initializer outside of function scope possible, I made sure that AddrExp::optimize doesn't try to run the argument's optimization with WANTinterpret - that'd again replace the constant with a struct literal temporary.
author Christian Kamm <kamm incasoftware de>
date Sun, 14 Jun 2009 19:49:58 +0200
parents 6aaa3d3c1183
children 628433c343b4
line wrap: on
line source

# Copied from tango runtime makefile.
# Designed to work with GNU make
# Targets:
#	make
#		Same as make all
#	make lib
#		Build the common library
#   make doc
#       Generate documentation
#	make clean
#		Delete unneeded files created by build process

LIB_TARGET=libtangobos-partial.a
LIB_MASK=libtangobos-partial.a*

CP=cp -f
RM=rm -f
MD=mkdir -p

ADD_CFLAGS=
ADD_DFLAGS=

#CFLAGS=-O3 $(ADD_CFLAGS)
CFLAGS=-g $(ADD_CFLAGS)

#DFLAGS=-release -O3 -inline -w $(ADD_DFLAGS)
DFLAGS=-g -w -noasm $(ADD_DFLAGS)

#TFLAGS=-O3 -inline -w $(ADD_DFLAGS)
TFLAGS=-g -w -noasm $(ADD_DFLAGS)

DOCFLAGS=-version=DDoc

CC=gcc
LC=llvm-ar rsv
CLC=ar rsv
DC=ldc
LLC=llvm-as
LLVMLINK=llvm-link
LLC=llc

INC_DEST=
LIB_DEST=
DOC_DEST=

.SUFFIXES: .d .bc

.d.bc:
	$(DC) -c $(DFLAGS) $< -of$@
#	$(DC) -c $(DFLAGS) $< -of$@

targets : lib
all     : lib
lib     : tangobos.lib

######################################################

OBJ_CORE= \
    std/gc.bc \
    std/outofmemory.bc \
#    std/asserterror.bc \
#    std/math.bc \
#    std/stdarg.bc
#    std/format.bc \

ALL_OBJS= \
    $(OBJ_CORE)

######################################################

tangobos.lib : $(LIB_TARGET)

$(LIB_TARGET) : $(ALL_OBJS)
	$(RM) $(LIB_MASK)
	$(LLVMLINK) -o=$(LIB_TARGET).bc `find -name "*.bc"`
	$(LLC) -o=$(LIB_TARGET).s $(LIB_TARGET).bc
	$(CC) -c -o $(LIB_TARGET) $(LIB_TARGET).s

clean :
	$(RM) $(ALL_OBJS)
	find . -name "$(LIB_MASK)" | xargs $(RM)