# # %CopyrightBegin% # # Copyright Scott Lystig Fritchie 2011. All Rights Reserved. # # The contents of this file are subject to the Erlang Public License, # Version 1.1, (the "License"); you may not use this file except in # compliance with the License. You should have received a copy of the # Erlang Public License along with this software. If not, it can be # retrieved online at http://www.erlang.org/. # # Software distributed under the License is distributed on an "AS IS" # basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See # the License for the specific language governing rights and limitations # under the License. # # %CopyrightEnd% # include $(ERL_TOP)/make/target.mk include $(ERL_TOP)/make/$(TARGET)/otp.mk include $(ERL_TOP)/make/$(TARGET)/otp_ded.mk # ---------------------------------------------------- # Items from top-level configure # ---------------------------------------------------- DTRACE_ENABLED=@DTRACE_ENABLED@ DTRACE_ENABLED_2STEP=@DTRACE_ENABLED_2STEP@ # ---------------------------------------------------- # Application version # ---------------------------------------------------- include ../vsn.mk VSN=$(DTRACE_VSN) # ---------------------------------------------------- # The following variables differ between systems. # Set by configure. # ---------------------------------------------------- CC = $(DED_CC) LD = $(DED_LD) SHELL = /bin/sh LIBS = $(DED_LIBS) LDFLAGS += $(DED_LDFLAGS) CFLAGS = $(DED_CFLAGS) DTRACE_LIBNAME = dtrace INCLUDES = $(DED_INCLUDES) ifeq ($(TYPE),debug) TYPEMARKER = .debug TYPE_FLAGS = $(subst -O3,,$(subst -O2,,$(CFLAGS))) -DDEBUG else ifeq ($(TYPE),valgrind) TYPEMARKER = .valgrind TYPE_FLAGS = $(subst -O3,,$(subst -O2,,$(CFLAGS))) -DVALGRIND else TYPEMARKER = TYPE_FLAGS = $(CFLAGS) endif endif ALL_CFLAGS = $(TYPE_FLAGS) $(INCLUDES) -I$(OBJDIR) \ -I$(ERL_TOP)/erts/emulator/$(TARGET) # ---------------------------------------------------- # Release directory specification # ---------------------------------------------------- RELSYSDIR = $(RELEASE_PATH)/lib/dtrace-$(VSN) # ---------------------------------------------------- # Misc Macros # ---------------------------------------------------- before_DTrace_OBJS = $(OBJDIR)/dtrace$(TYPEMARKER).o ## NIF_MAKEFILE = $(PRIVDIR)/Makefile # Higher-level makefiles says that we can only compile on UNIX flavors NIF_LIB = $(LIBDIR)/dtrace$(TYPEMARKER).so ifeq ($(HOST_OS),) HOST_OS := $(shell $(ERL_TOP)/erts/autoconf/config.guess) endif # ---------------------------------------------------- # Targets # ---------------------------------------------------- debug opt valgrind: $(OBJDIR) $(LIBDIR) $(NIF_LIB) ifdef DTRACE_ENABLED DTRACE_USER_HEADER=$(OBJDIR)/dtrace_user.h $(OBJDIR)/dtrace_user.h: ./dtrace_user.d dtrace -h -C $(INCLUDES) \ -s ./dtrace_user.d \ -o ./dtrace_user.tmp sed -e '/^#define[ ]*ERLANG_[A-Z0-9_]*(.*)/y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/' ./dtrace_user.tmp > $@ rm ./dtrace_user.tmp else DTRACE_USER_HEADER= endif DTRACE_OBJS = ifdef DTRACE_ENABLED_2STEP DTRACE_OBJS += $(OBJDIR)/dtrace_user.o $(OBJDIR)/dtrace_user.o: $(before_DTrace_OBJS) $(OBJDIR)/dtrace_user.h dtrace -G -C \ -s ./dtrace_user.d \ -o $@ $(before_DTrace_OBJS) endif OBJS = $(before_DTrace_OBJS) $(DTRACE_OBJS) $(OBJDIR): -@mkdir -p $(OBJDIR) $(LIBDIR): -@mkdir -p $(LIBDIR) $(OBJDIR)/%$(TYPEMARKER).o: %.c $(DTRACE_USER_HEADER) $(INSTALL_DIR) $(OBJDIR) $(CC) -c -o $@ $(ALL_CFLAGS) $< $(LIBDIR)/dtrace$(TYPEMARKER).so: $(OBJS) $(INSTALL_DIR) $(LIBDIR) $(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS) clean: rm -f $(LIBDIR)/dtrace.so rm -f $(LIBDIR)/dtrace.debug.so rm -f $(LIBDIR)/dtrace.valgrind.so rm -f $(OBJDIR)/dtrace.o rm -f $(OBJDIR)/dtrace.debug.o rm -f $(OBJDIR)/dtrace.valgrind.o rm -f core *~ docs: # ---------------------------------------------------- # Release Target # ---------------------------------------------------- include $(ERL_TOP)/make/otp_release_targets.mk release_spec: opt $(INSTALL_DIR) $(RELSYSDIR)/priv/obj $(INSTALL_DIR) $(RELSYSDIR)/priv/lib # $(INSTALL_DATA) $(NIF_MAKEFILE) $(RELSYSDIR)/priv/obj $(INSTALL_PROGRAM) $(OBJS) $(RELSYSDIR)/priv/obj $(INSTALL_PROGRAM) $(NIF_LIB) $(RELSYSDIR)/priv/lib release_docs_spec: