summaryrefslogtreecommitdiff
path: root/ndb/Epilogue.mk
diff options
context:
space:
mode:
Diffstat (limited to 'ndb/Epilogue.mk')
-rw-r--r--ndb/Epilogue.mk853
1 files changed, 853 insertions, 0 deletions
diff --git a/ndb/Epilogue.mk b/ndb/Epilogue.mk
new file mode 100644
index 00000000000..89cd4034208
--- /dev/null
+++ b/ndb/Epilogue.mk
@@ -0,0 +1,853 @@
+# .KEEP_STATE:
+# bk test !!!
+
+###
+# For building some intermediary targets in /tmp (only useful on solaris)
+ifneq ($(NDB_BUILDROOT),)
+NDB_TOPABS := $(shell cd $(NDB_TOP) && /bin/pwd)
+NDB_BUILDDIR := $(subst $(NDB_TOPABS),$(NDB_BUILDROOT),$(CURDIR))/
+ifeq ($(wildcard $(NDB_BUILDDIR)),)
+dummy := $(shell mkdir -p $(NDB_BUILDDIR))
+endif
+endif
+
+###
+CCFLAGS_TOP += -DNDB_$(NDB_OS) -DNDB_$(NDB_ARCH) -DNDB_$(NDB_COMPILER)
+
+ifdef BIN_TARGET
+BIN_EXE = Y
+endif
+
+###
+#
+# OS specifics
+#
+
+# Disable shared libraries on HP-UX for the time being.
+ifeq ($(NDB_OS), HPUX)
+ SO_LIB := N
+ PIC_LIB := N
+ PIC_ARCHIVE := N
+ NONPIC_ARCHIVE := Y
+endif
+
+ifeq ($(NDB_OS), OSE)
+ SO_LIB := N
+ PIC_LIB := N
+ PIC_ARCHIVE := N
+ NONPIC_ARCHIVE := Y
+
+ifdef BIN_TARGET
+ BIN_LIB_TARGET := lib$(BIN_TARGET).a
+ BIN_TARGET := lib$(BIN_TARGET).a
+endif
+endif
+
+ifeq ($(NDB_OS), SOFTOSE)
+ SO_LIB := N
+ PIC_LIB := N
+ PIC_ARCHIVE := N
+
+ifdef BIN_TARGET
+ BIN_EXE_TARGET := $(BIN_TARGET)
+ BIN_LIB_TARGET := lib$(BIN_TARGET).a
+ EXTRA_MAIN := osemain.o
+endif
+endif
+
+ifeq ($(filter OSE, $(NDB_OS)),)
+ BIN_EXE_TARGET := $(BIN_TARGET)
+endif
+
+
+ifeq ($(NDB_OS), MACOSX)
+.LIBPATTERNS= lib%.dylib lib%.a
+endif
+
+###
+#
+#
+
+###
+# External dependencies definition : the place we store libraries
+# we get from outside the NDB development group.
+EXTERNAL_DEPENDS_TOP=$(NDB_TOP)/src/external/$(NDB_OS).$(NDB_ARCH)
+
+
+###
+#
+# TYPE Handling
+
+#
+# TYPE := kernel
+#
+ifneq ($(filter kernel, $(TYPE)),)
+CCFLAGS_LOC += \
+ -I$(call fixpath,$(NDB_TOP)/src/kernel/vm) \
+ -I$(call fixpath,$(NDB_TOP)/src/kernel/error) \
+ -I$(call fixpath,$(NDB_TOP)/src/kernel) \
+ -I$(call fixpath,$(NDB_TOP)/include/kernel) \
+ -I$(call fixpath,$(NDB_TOP)/include/transporter) \
+ -I$(call fixpath,$(NDB_TOP)/include/debugger) \
+ -I$(call fixpath,$(NDB_TOP)/include/mgmcommon) \
+ -I$(call fixpath,$(NDB_TOP)/include/ndbapi) \
+ -I$(call fixpath,$(NDB_TOP)/include/util) \
+ -I$(call fixpath,$(NDB_TOP)/include/portlib) \
+ -I$(call fixpath,$(NDB_TOP)/include/logger)
+endif
+
+#
+# TYPE := ndbapi
+#
+ifneq ($(filter ndbapi, $(TYPE)),)
+CCFLAGS_LOC += \
+ -I$(call fixpath,$(NDB_TOP)/include/kernel) \
+ -I$(call fixpath,$(NDB_TOP)/include/transporter) \
+ -I$(call fixpath,$(NDB_TOP)/include/debugger) \
+ -I$(call fixpath,$(NDB_TOP)/include/mgmcommon) \
+ -I$(call fixpath,$(NDB_TOP)/include/ndbapi) \
+ -I$(call fixpath,$(NDB_TOP)/include/util) \
+ -I$(call fixpath,$(NDB_TOP)/include/portlib) \
+ -I$(call fixpath,$(NDB_TOP)/include/logger)
+endif
+
+#
+# TYPE := ndbapiclient
+#
+ifneq ($(filter ndbapiclient, $(TYPE)),)
+CCFLAGS_LOC += \
+ -I$(call fixpath,$(NDB_TOP)/include/ndbapi)
+
+BIN_TARGET_LIBS += NDB_API
+endif
+
+#
+# TYPE := mgmapiclient
+#
+ifneq ($(filter mgmapiclient, $(TYPE)),)
+CCFLAGS_LOC += \
+ -I$(call fixpath,$(NDB_TOP)/include/mgmapi)
+
+BIN_TARGET_LIBS += MGM_API
+endif
+
+#
+# TYPE := ndbapitest
+#
+ifneq ($(filter ndbapitest, $(TYPE)),)
+CCFLAGS_LOC += \
+ -I$(call fixpath,$(NDB_TOP)/include/ndbapi) \
+ -I$(call fixpath,$(NDB_TOP)/include/util) \
+ -I$(call fixpath,$(NDB_TOP)/include/portlib) \
+ -I$(call fixpath,$(NDB_TOP)/test/include) \
+ -I$(call fixpath,$(NDB_TOP)/include/mgmapi)
+
+BIN_TARGET_LIBS += NDBT
+LDFLAGS_LOC += -lNDB_API -lMGM_API -lm
+
+endif
+
+#
+# TYPE := signalsender
+#
+ifneq ($(filter signalsender, $(TYPE)),)
+CCFLAGS_LOC += \
+ -I$(call fixpath,$(NDB_TOP)/include/ndbapi) \
+ -I$(call fixpath,$(NDB_TOP)/src/ndbapi) \
+ -I$(call fixpath,$(NDB_TOP)/src/ndbapi/signal-sender) \
+ -I$(call fixpath,$(NDB_TOP)/include/util) \
+ -I$(call fixpath,$(NDB_TOP)/include/portlib) \
+ -I$(call fixpath,$(NDB_TOP)/include/transporter) \
+ -I$(call fixpath,$(NDB_TOP)/include/mgmcommon) \
+ -I$(call fixpath,$(NDB_TOP)/include/kernel)
+
+BIN_TARGET_LIBS += NDB_API
+BIN_TARGET_ARCHIVES += editline signal-sender
+
+endif
+
+
+#
+# TYPE := repserver
+#
+ifneq ($(filter repserver, $(TYPE)),)
+CCFLAGS_LOC += \
+ -I$(call fixpath,$(NDB_TOP)/include/ndbapi) \
+ -I$(call fixpath,$(NDB_TOP)/src) \
+ -I$(call fixpath,$(NDB_TOP)/src/ndbapi) \
+ -I$(call fixpath,$(NDB_TOP)/src/ndbapi/signal-sender) \
+ -I$(call fixpath,$(NDB_TOP)/include/util) \
+ -I$(call fixpath,$(NDB_TOP)/include/portlib) \
+ -I$(call fixpath,$(NDB_TOP)/include/transporter) \
+ -I$(call fixpath,$(NDB_TOP)/include/mgmcommon) \
+ -I$(call fixpath,$(NDB_TOP)/include/kernel)
+endif
+
+#
+# TYPE := odbcclient
+#
+
+ifneq ($(filter odbcclient, $(TYPE)),)
+TYPE += util
+LDFLAGS_LOC += -lm
+#ifneq ($(call check-odbc),)
+ifneq ($(NDB_ODBC),N)
+ifeq ($(NDB_OS), SOLARIS)
+CCFLAGS_LOC += -I/usr/local/include
+BIN_TARGET_LIBS_DIRS += /usr/local/lib
+BIN_TARGET_LIBS += odbc odbcinst NDBT
+endif
+ifeq ($(NDB_OS), LINUX)
+BIN_TARGET_LIBS += odbc odbcinst NDBT
+endif
+ifeq ($(NDB_OS), MACOSX)
+BIN_TARGET_LIBS += odbc odbcinst NDBT
+endif
+ifeq ($(NDB_OS), IBMAIX)
+BIN_TARGET_LIBS += odbc odbcinst NDBT
+endif
+ifeq ($(NDB_OS), TRU64X)
+BIN_TARGET_LIBS += odbc odbcinst NDBT
+endif
+else
+BIN_EXE = N
+endif
+endif
+
+#
+# TYPE := *
+#
+#
+# TYPE := util
+#
+ifneq ($(filter util, $(TYPE)),)
+CCFLAGS_LOC += -I$(call fixpath,$(NDB_TOP)/include/util) \
+ -I$(call fixpath,$(NDB_TOP)/include/portlib) \
+ -I$(call fixpath,$(NDB_TOP)/include/logger)
+BIN_TARGET_LIBS += logger general portlib
+endif
+
+CCFLAGS_LOC += -I$(call fixpath,$(NDB_TOP)/include)
+
+ifeq ($(NDB_SCI), Y)
+BIN_TARGET_LIBS += sisci
+BIN_TARGET_LIBS_DIRS += $(EXTERNAL_DEPENDS_TOP)/sci/lib
+
+CCFLAGS_LOC += -I$(call fixpath,$(EXTERNAL_DEPENDS_TOP)/sci/include)
+endif
+
+#
+# TYPE Handling
+###
+
+###
+#
+# First rule
+#
+first:
+ $(MAKE) libs
+ $(MAKE) bins
+
+ifeq ($(findstring all,$(replace-targets)),)
+all: first
+endif
+
+###
+#
+# Nice to have rules
+api: libs
+ $(MAKE) -C $(NDB_TOP)/src/ndbapi bins
+
+mgm: libs
+ $(MAKE) -C $(NDB_TOP)/src/mgmsrv bins
+
+ndb: libs
+ $(MAKE) -C $(NDB_TOP)/src/kernel/ndb-main bins
+
+apitest: first
+ $(MAKE) -C $(NDB_TOP)/test/ndbapi all
+
+#-lNDBT:
+# $(MAKE) -C $(NDB_TOP)/test/src all
+#
+#-lNDB_API: libs
+# $(MAKE) -C $(NDB_TOP)/src/ndbapi bins
+
+#
+# Libs/Bins
+#
+ifdef PREREQ_LOC
+_libs:: $(PREREQ_LOC)
+_bins:: $(PREREQ_LOC)
+endif
+
+L_DIRS := $(LIB_DIRS) $(DIRS)
+B_DIRS := $(BIN_DIRS) $(DIRS)
+A_DIRS := $(LIB_DIRS) $(BIN_DIRS) $(DIRS)
+
+_libs::
+
+_bins::
+
+libs: _libs $(patsubst %, _libs_%, $(L_DIRS))
+$(patsubst %, _libs_%, $(L_DIRS)) : DUMMY
+ $(MAKE) -C $(patsubst _libs_%,%,$@) libs
+
+bins: _bins $(patsubst %, _bins_%, $(B_DIRS))
+$(patsubst %, _bins_%, $(B_DIRS)) : DUMMY
+ $(MAKE) -C $(patsubst _bins_%,%,$@) bins
+
+###
+#
+# Links
+_links:
+ -$(NDB_TOP)/tools/make-links.sh $(NDB_TOP)/include `pwd`
+
+links: _links $(patsubst %, _links_%, $(A_DIRS))
+$(patsubst %, _links_%, $(A_DIRS)) : DUMMY
+ $(MAKE) -C $(patsubst _links_%,%,$@) links
+
+
+####
+#
+# OSE build_spec (
+ifdef SOURCES
+BS := Y
+endif
+
+ifdef SOURCES_c
+BS := Y
+endif
+
+_build_spec: Makefile
+ifdef BS
+ @echo "TYPE = SWU" > build.spec
+ @echo "include $(NDB_TOP)/Ndb.mk" >> build.spec
+# @for i in $(CCFLAGS_LOC); do echo "INC += $$i" >> build.spec ; done
+ @for i in $(patsubst -I%, %, $(CCFLAGS_LOC)); do echo "INC += $$i" >> build.spec ; done
+ @echo "INC += /vobs/cello/cls/rtosi_if/include" >> build.spec
+ @echo "INC += /vobs/cello/cls/rtosi_if/include.@@@" >> build.spec
+ @echo "INC += /vobs/cello/cls/rtosi_if/include.<<<" >> build.spec
+endif
+
+build_spec: _build_spec $(patsubst %, _build_spec_%, $(A_DIRS))
+$(patsubst %, _build_spec_%, $(A_DIRS)) : DUMMY
+ $(MAKE) -C $(patsubst _build_spec_%,%,$@) build_spec
+
+###
+#
+# Phony targets
+
+.PHONY: $(A_DIRS)
+
+###
+#
+# Dummy rule
+
+DUMMY:
+
+###
+#
+# Definitions of...
+
+PIC_DIR := $(NDB_BUILDDIR).pic
+A_TMP_DIR := $(NDB_BUILDDIR).a_tmp
+SO_TMP_DIR := $(NDB_BUILDDIR).so_tmp
+PIC_TMP_DIR := $(NDB_BUILDDIR).pic_tmp
+
+$(PIC_DIR):
+ mkdir -p $(PIC_DIR)
+
+SRC_C := $(filter %.C, $(SOURCES))
+SRC_CPP := $(filter %.cpp, $(SOURCES))
+SRC_CC := $(filter %.cc, $(SOURCES))
+SRC_c := $(filter %.c, $(SOURCES)) $(filter %.c, $(SOURCES.c))
+SRC_YPP := $(filter %.ypp, $(SOURCES))
+SRC_LPP := $(filter %.lpp, $(SOURCES))
+
+OBJECTS := $(SRC_C:%.C=%.$(OBJEXT)) \
+ $(SRC_CPP:%.cpp=%.$(OBJEXT)) \
+ $(SRC_CC:%.cc=%.$(OBJEXT)) \
+ $(SRC_c:%.c=%.$(OBJEXT)) \
+ $(SRC_YPP:%.ypp=%.tab.$(OBJEXT)) \
+ $(SRC_LPP:%.lpp=%.yy.$(OBJEXT)) \
+ $(OBJECTS_LOC)
+
+PIC_OBJS := $(OBJECTS:%=$(PIC_DIR)/%)
+
+LIB_DIR := $(NDB_TOP)/lib
+BIN_DIR := $(NDB_TOP)/bin
+
+###
+#
+# ARCHIVE_TARGET
+#
+ifdef ARCHIVE_TARGET
+
+ifndef NONPIC_ARCHIVE
+NONPIC_ARCHIVE := Y
+endif
+
+ifeq ($(NONPIC_ARCHIVE), Y)
+_libs:: $(LIB_DIR)/$(LIBPREFIX)$(ARCHIVE_TARGET).$(LIBEXT)
+$(LIB_DIR)/$(LIBPREFIX)$(ARCHIVE_TARGET).$(LIBEXT) : $(OBJECTS)
+ $(call ar_rcs,$@,$(OBJECTS))
+
+endif # NONPIC_ARCHIVE := Y
+
+ifeq ($(PIC_ARCHIVE), Y)
+_libs:: $(PIC_DIR) $(LIB_DIR)/$(LIBPREFIX)$(ARCHIVE_TARGET)_pic.$(LIBEXT)
+$(LIB_DIR)/$(LIBPREFIX)$(ARCHIVE_TARGET)_pic.$(LIBEXT) : $(PIC_OBJS)
+ cd $(PIC_DIR) && $(call ar_rcs,../$@,$(OBJECTS))
+
+PIC_DEP := Y
+
+endif # PIC_ARCHIVE := Y
+
+endif # ARCHIVE_TARGET
+
+###
+#
+# LIB_TARGET
+#
+ifdef LIB_TARGET
+
+ifeq ($(A_LIB), Y)
+
+A_LIB_ARCHIVES := $(LIB_TARGET_ARCHIVES:%=$(LIB_DIR)/$(LIBPREFIX)%.$(LIBEXT))
+
+_bins:: $(LIB_DIR)/$(LIBPREFIX)$(LIB_TARGET).$(LIBEXT)
+$(LIB_DIR)/$(LIBPREFIX)$(LIB_TARGET).$(LIBEXT) : $(A_LIB_ARCHIVES)
+ @rm -rf $(A_TMP_DIR) && mkdir $(A_TMP_DIR)
+ cd $(A_TMP_DIR) && for i in $^; do ar -x ../$$i; done && $(call ar_rcs,../$@,*.$(OBJEXT))
+ $(NDB_TOP)/home/bin/ndb_deploy $@
+endif # A_LIB := Y
+
+ifeq ($(SO_LIB), Y)
+ifneq ($(NDB_OS), WIN32)
+SO_LIB_ARCHIVES := $(LIB_TARGET_ARCHIVES:%=$(LIB_DIR)/$(LIBPREFIX)%_pic.$(LIBEXT))
+
+_bins:: $(LIB_DIR)/$(LIBPREFIX)$(LIB_TARGET).$(SHLIBEXT)
+$(LIB_DIR)/$(LIBPREFIX)$(LIB_TARGET).$(SHLIBEXT) : $(SO_LIB_ARCHIVES)
+ @rm -rf $(SO_TMP_DIR) && mkdir $(SO_TMP_DIR)
+ cd $(SO_TMP_DIR) && for i in $^; do ar -x ../$$i; done
+ifneq ($(NDB_OS), MACOSX)
+ $(SO) $@.new $(SO_TMP_DIR)/*.$(OBJEXT) -L$(LIB_DIR) $(LIB_TARGET_LIBS) $(LDFLAGS_LAST)
+ rm -f $@; mv $@.new $@
+else
+ $(SO) $@ $(SO_TMP_DIR)/*.$(OBJEXT) -L$(LIB_DIR) $(LIB_TARGET_LIBS) $(LDFLAGS_LAST)
+endif
+ifeq ($(NDB_VERSION), RELEASE)
+ifneq ($(NDB_OS), MACOSX)
+ strip $@
+endif
+endif
+ $(NDB_TOP)/home/bin/ndb_deploy $@
+else # WIN32
+SO_LIB_ARCHIVES := $(LIB_TARGET_ARCHIVES:%=$(LIB_DIR)/$(LIBPREFIX)%_pic.$(LIBEXT))
+
+_bins:: $(LIB_DIR)/$(LIBPREFIX)$(LIB_TARGET).$(SHLIBEXT)
+$(LIB_DIR)/$(LIBPREFIX)$(LIB_TARGET).$(SHLIBEXT) : $(SO_LIB_ARCHIVES)
+ @rm -rf $(SO_TMP_DIR) && mkdir $(SO_TMP_DIR)
+ cd $(SO_TMP_DIR) && for i in $^; do ar -x ../$$i; done
+ $(call link_so,$@.new,$(SO_TMP_DIR)/*.$(OBJEXT))
+ rm -f $@; mv $@.new $@
+#ifeq ($(NDB_VERSION), RELEASE)
+# strip $@
+#endif
+
+endif
+endif # SO_LIB := Y
+
+ifeq ($(PIC_LIB), Y)
+
+PIC_LIB_ARCHIVES := $(LIB_TARGET_ARCHIVES:%=$(LIB_DIR)/$(LIBPREFIX)%_pic.$(LIBEXT))
+
+_bins:: $(LIB_DIR)/$(LIBPREFIX)$(LIB_TARGET)_pic.$(LIBEXT)
+$(LIB_DIR)/$(LIBPREFIX)$(LIB_TARGET)_pic.$(LIBEXT) : $(PIC_LIB_ARCHIVES)
+ @rm -rf $(PIC_TMP_DIR) && mkdir $(PIC_TMP_DIR)
+ cd $(PIC_TMP_DIR) && for i in $^; do ar -x ../$$i; done && $(call ar_rcs,../$@,*.$(OBJEXT))
+
+endif # PIC_LIB := Y
+
+endif # LIB_TARGET
+
+###
+#
+# BIN_TARGET
+#
+ifeq ($(BIN_EXE), Y)
+ifneq ($(NDB_OS), WIN32)
+BIN_LIBS := $(BIN_TARGET_ARCHIVES:%=$(LIB_DIR)/$(LIBPREFIX)%.$(LIBEXT))
+BIN_LIBS += $(BIN_TARGET_LIBS:%=-l%)
+
+BIN_DEPS := $(OBJECTS) $(EXTRA_MAIN) $(BIN_LIBS)
+BIN_LIB_DIRS := $(BIN_TARGET_LIBS_DIRS:%=-L%)
+
+BIN_FLAGS := $(BIN_LIB_DIRS) $(BIN_DEPS)
+
+VPATH := $(LIB_DIR) $(BIN_TARGET_LIBS_DIRS)
+_bins:: $(BIN_DIR)/$(BIN_TARGET)
+$(BIN_DIR)/$(BIN_TARGET) : $(BIN_DEPS)
+ $(LINK.cc) $(LDFLAGS) $(LDLIBS) -L$(LIB_DIR) $(BIN_FLAGS) -o $@.new $(LDFLAGS_LAST)
+ rm -f $@; mv $@.new $@
+ifeq ($(NDB_VERSION), RELEASE)
+ifneq ($(NDB_OS), MACOSX)
+ strip $@
+endif
+endif
+ $(NDB_TOP)/home/bin/ndb_deploy $@
+else # WIN32
+BIN_LIBS := $(foreach lib,$(BIN_TARGET_ARCHIVES),$(call fixpath,$(LIB_DIR)/$(LIBPREFIX)$(lib).$(LIBEXT)))
+BIN_LIBS += $(BIN_TARGET_LIBS:%=$(LIBPREFIX)%.$(LIBEXT))
+
+BIN_DEPS := $(OBJECTS) $(BIN_TARGET_ARCHIVES:%=$(LIB_DIR)/$(LIBPREFIX)%.$(LIBEXT))
+BIN_LIB_DIRS := -libpath:$(call fixpath,$(LIB_DIR)) $(BIN_TARGET_LIBS_DIRS:%=-libpath:%)
+
+BIN_FLAGS := $(BIN_LIB_DIRS)
+
+VPATH := $(LIB_DIR) $(BIN_TARGET_LIBS_DIRS)
+_bins:: $(BIN_DIR)/$(BIN_TARGET).exe
+$(BIN_DIR)/$(BIN_TARGET).exe : $(BIN_DEPS)
+ $(LINK.cc) -out:$(call fixpath,$@.new) $(OBJECTS) $(BIN_FLAGS) $(BIN_LIBS)
+ rm -f $@; mv $@.new $@
+ifeq ($(NDB_VERSION), RELEASE)
+ strip $@
+endif
+
+endif
+endif
+
+###
+#
+# SOURCES.sh
+#
+ifdef SOURCES.sh
+
+BIN_SRC := $(SOURCES.sh:%=$(BIN_DIR)/%)
+
+_bins:: $(BIN_SRC)
+
+$(BIN_SRC) : $(SOURCES.sh)
+ rm -f $(^:%=$(BIN_DIR)/%)
+ cp $^ $(BIN_DIR)
+endif
+
+#
+# Compile rules PIC objects
+#
+ifeq ($(NDB_OS), WIN32)
+OUT := -Fo
+else
+OUT := -o
+endif
+
+$(PIC_DIR)/%.$(OBJEXT): %.C
+ $(C++) $(OUT)$@ -c $(CCFLAGS) $(CFLAGS_$<) $(PIC) $<
+
+$(PIC_DIR)/%.$(OBJEXT): %.cpp
+ $(C++) $(OUT)$@ -c $(CCFLAGS) $(CFLAGS_$<) $(PIC) $<
+
+$(PIC_DIR)/%.$(OBJEXT): %.cc
+ $(C++) $(OUT)$@ -c $(CCFLAGS) $(CFLAGS_$<) $(PIC) $<
+
+$(PIC_DIR)/%.$(OBJEXT): %.c
+ $(CC) $(OUT)$@ -c $(CFLAGS) $(CFLAGS_$<) $(PIC) $<
+
+#
+# Compile rules
+#
+%.$(OBJEXT) : %.cpp
+ $(C++) $(OUT)$@ -c $(CCFLAGS) $(CFLAGS_$<) $(NON_PIC) $<
+
+%.$(OBJEXT) : %.C
+ $(C++) $(OUT)$@ -c $(CCFLAGS) $(CFLAGS_$<) $(NON_PIC) $<
+
+%.$(OBJEXT) : %.cc
+ $(C++) $(OUT)$@ -c $(CCFLAGS) $(CFLAGS_$<) $(NON_PIC) $<
+
+%.$(OBJEXT) : %.c
+ $(CC) $(OUT)$@ -c $(CFLAGS) $(CFLAGS_$<) $(NON_PIC) $<
+
+%.s : %.C
+ $(C++) -S $(CCFLAGS) $(CFLAGS_$<) $(NON_PIC) $<
+
+%.s : %.cpp
+ $(C++) -S $(CCFLAGS) $(CFLAGS_$<) $(NON_PIC) $<
+
+%.s : %.cc
+ $(C++) -S $(CCFLAGS) $(CFLAGS_$<) $(NON_PIC) $<
+
+%.s : %.c
+ $(CC) -S $(CCFLAGS) $(CFLAGS_$<) $(NON_PIC) $<
+
+BISON = bison
+BISONHACK = :
+%.tab.cpp %.tab.hpp : %.ypp
+ $(BISON) $<
+ $(BISONHACK) $*.tab.cpp $*.tab.hpp
+
+FLEX = flex
+FLEXHACK = :
+%.yy.cpp : %.lpp
+ $(FLEX) -o$@ $<
+ $(FLEXHACK) $@
+
+###
+#
+# Defines regarding dependencies
+
+DEPMK := $(NDB_BUILDDIR).depend.mk
+
+DEPDIR := $(NDB_BUILDDIR).depend
+
+DEPENDENCIES := $(SRC_C:%.C=$(DEPDIR)/%.d) \
+ $(SRC_CC:%.cc=$(DEPDIR)/%.d) \
+ $(SRC_CPP:%.cpp=$(DEPDIR)/%.d) \
+ $(SRC_c:%.c=$(DEPDIR)/%.d) \
+ $(SRC_YPP:%.ypp=$(DEPDIR)/%.tab.d) \
+ $(SRC_LPP:%.lpp=$(DEPDIR)/%.yy.d)
+
+###
+#
+# Dependency rule
+
+_depend: $(DEPMK)
+
+depend: _depend $(patsubst %, _depend_%, $(A_DIRS))
+
+$(patsubst %, _depend_%, $(A_DIRS)) : DUMMY
+ $(MAKE) -C $(patsubst _depend_%,%,$@) depend
+
+###
+#
+# Clean dependencies
+
+_clean_dep:
+ -rm -rf $(DEPMK) $(DEPDIR)/*
+
+clean_dep: _clean_dep $(patsubst %, _clean_dep_%, $(A_DIRS))
+
+$(patsubst %, _clean_dep_%, $(A_DIRS)) : DUMMY
+ $(MAKE) -C $(patsubst _clean_dep_%,%,$@) clean_dep
+
+###
+#
+# Generate dependencies
+
+$(DEPDIR):
+ -@mkdir -p $(DEPDIR)
+
+$(DEPDIR)/%.d: %.C
+ @echo Generating depend for $<
+ @$(MAKEDEPEND) $(CCFLAGS) $(CFLAGS_$<) $< >$@
+
+$(DEPDIR)/%.d: %.c
+ @echo Generating depend for $<
+ @$(MAKEDEPEND) $(CCFLAGS) $(CFLAGS_$<) $< >$@
+
+$(DEPDIR)/%.d: %.cpp
+ @echo Generating depend for $<
+ @$(MAKEDEPEND) $(CCFLAGS) $(CFLAGS_$<) $< >$@
+
+$(DEPDIR)/%.d: %.cc
+ @echo Generating depend for $<
+ @$(MAKEDEPEND) $(CCFLAGS) $(CFLAGS_$<) $< >$@
+
+ifeq ($(NDB_OS), WIN32)
+ifndef PIC_DEP
+DEP_PTN := -e 's/\(.*\)\.o[ :]*/\1.$(OBJEXT) $(DEPDIR)\/\1.d : /g'
+else
+DEP_PTN := -e 's/\(.*\)\.o[ :]*/\1.$(OBJEXT) $(PIC_DIR)\/\1.$(OBJEXT) $(DEPDIR)\/\1.d : /g'
+endif
+else
+ifndef PIC_DEP
+DEP_PTN := -e 's!\(.*\)\.$(OBJEXT)[ :]*!\1.$(OBJEXT) $(DEPDIR)\/\1.d : !g'
+else
+DEP_PTN := -e 's!\(.*\)\.$(OBJEXT)[ :]*!\1.$(OBJEXT) $(PIC_DIR)\/\1.$(OBJEXT) $(DEPDIR)\/\1.d : !g'
+endif
+endif
+#DEP_PTN += -e 's!/usr/include/[-+a-zA-Z0-9_/.]*!!g'
+#DEP_PTN += -e 's!/usr/local/lib/gcc-lib/[-+a-zA-Z0-9_/.]*!!g'
+
+$(DEPMK): $(DEPDIR) $(SRC_YPP:%.ypp=%.tab.hpp) $(SRC_LPP:%.lpp=%.yy.cpp) $(DEPENDENCIES) $(wildcard $(NDB_TOP)/.update.d)
+ @echo "updating .depend.mk"
+ @sed $(DEP_PTN) /dev/null $(DEPENDENCIES) >$(DEPMK)
+
+###
+#
+# clean
+#
+_clean:
+ -rm -rf SunWS_cache $(PIC_DIR)/SunWS_cache
+ifeq ($(NONPIC_ARCHIVE), Y)
+ -rm -f $(OBJECTS) $(LIB_DIR)/$(LIBPREFIX)$(ARCHIVE_TARGET).$(LIBEXT)
+endif
+ifeq ($(PIC_ARCHIVE), Y)
+ -rm -f $(PIC_OBJS) $(LIB_DIR)/$(LIBPREFIX)$(ARCHIVE_TARGET)_pic.$(LIBEXT)
+endif
+ifdef BIN_TARGET
+ -rm -f $(OBJECTS)
+endif
+ifdef LIB_TARGET
+ifeq ($(A_LIB), Y)
+ -rm -f $(A_TMP_DIR)/*
+endif
+ifeq ($(SO_LIB), Y)
+ -rm -f $(SO_TMP_DIR)/*
+endif
+ifeq ($(PIC_LIB), Y)
+ -rm -f $(PIC_TMP_DIR)/*
+endif
+endif
+ifneq ($(SRC_YPP),)
+ -rm -f $(SRC_YPP:%.ypp=%.tab.[hc]pp) $(SRC_YPP:%.ypp=%.output)
+endif
+ifneq ($(SRC_LPP),)
+ -rm -f $(SRC_LPP:%.lpp=%.yy.*)
+endif
+ifdef CLEAN_LOC
+ -rm -f $(CLEAN_LOC)
+endif
+
+###
+#
+# clean all
+#
+clobber: cleanall
+_cleanall: _clean clean_links
+ -rm -f osemain.con osemain.c
+ifdef LIB_TARGET
+ifeq ($(A_LIB), Y)
+ -rm -f $(LIB_DIR)/$(LIBPREFIX)$(LIB_TARGET).$(LIBEXT)
+endif
+ifeq ($(SO_LIB), Y)
+ -rm -f $(LIB_DIR)/$(LIBPREFIX)$(LIB_TARGET).$(SHLIBEXT)
+endif
+ifeq ($(PIC_LIB), Y)
+ -rm -f $(LIB_DIR)/$(LIBPREFIX)$(LIB_TARGET)_pic.$(LIBEXT)
+endif
+endif
+ifdef BIN_TARGET
+ -rm -f $(BIN_DIR)/$(BIN_TARGET)
+endif
+
+clean_links:
+
+###
+#
+# Dist clean
+#
+_distclean: _tidy
+ rm -rf $(DEPDIR) $(PIC_DIR) $(PIC_TMP_DIR) $(SO_TMP_DIR) $(A_TMP_DIR) Sources build.spec
+
+###
+#
+# tidy
+#
+_tidy: _cleanall _clean_dep
+ -rm -f *~ *.$(OBJEXT) *.$(LIBEXT) *.${SHLIBEXT}
+
+#
+# clean cleanall tidy - recursion
+#
+ifeq ($(findstring clean,$(replace-targets)),)
+clean: _clean $(patsubst %, _clean_%, $(A_DIRS))
+endif
+
+$(patsubst %, _clean_%, $(A_DIRS)) : DUMMY
+ $(MAKE) -C $(patsubst _clean_%,%,$@) clean
+
+cleanall: _cleanall $(patsubst %, _cleanall_%, $(A_DIRS))
+
+$(patsubst %, _cleanall_%, $(A_DIRS)) : DUMMY
+ $(MAKE) -C $(patsubst _cleanall_%,%,$@) cleanall
+
+tidy: _tidy $(patsubst %, _tidy_%, $(A_DIRS))
+
+$(patsubst %, _tidy_%, $(A_DIRS)) : DUMMY
+ $(MAKE) -C $(patsubst _tidy_%,%,$@) tidy
+
+distclean: _distclean $(patsubst %, _distclean_%, $(A_DIRS))
+
+$(patsubst %, _distclean_%, $(A_DIRS)) : DUMMY
+ $(MAKE) -C $(patsubst _distclean_%,%,$@) distclean
+
+###
+#
+# Guess configuration
+
+$(NDB_TOP)/config/config.mk: $(NDB_TOP)/config/GuessConfig.sh
+ $(NDB_TOP)/config/GuessConfig.sh -D
+
+$(NDB_TOP)/config/Defs....mk: $(NDB_TOP)/config/config.mk
+$(NDB_TOP)/config/Defs..mk: $(NDB_TOP)/config/config.mk
+
+###
+# Soft ose envirment stuff
+#
+osemain.con: $(NDB_TOP)/src/env/softose/osemain_con.org
+ cp $< $@
+ echo "PRI_PROC(init_$(BIN_TARGET), init_$(BIN_TARGET), 65535, 3, ndb, 0, NULL)" >> $@
+
+osemain.c: $(OSE_LOC)/sfk-solaris2/krn-solaris2/src/osemain.c
+ ln -s $< $@
+
+osemain.o : osemain.con
+
+$(DEPDIR)/osemain.d : osemain.con
+
+###
+#
+# These target dont want dependencies
+
+NO_DEP=clean clobber cleanall tidy clean_dep $(DEPDIR) build_spec \
+ $(NDB_TOP)/config/config.mk distclean osemain.con osemain.c
+
+ifeq ($(filter $(NO_DEP), $(MAKECMDGOALS)),)
+ifneq ($(strip $(DEPENDENCIES)),)
+ include $(DEPMK)
+endif
+endif
+
+###
+#
+# Auxiliary targets
+
+sources: Sources
+
+Sources: Makefile
+ @rm -f $@
+ @for f in Makefile $(A_DIRS) $(SOURCES) $(SOURCES.c); do echo $$f; done >$@
+
+###
+#
+# TAG generation for emacs and vi folks
+#
+# In emacs "Esc- ." or "M- ." to find a symbol location
+# In vi use the :\tag command
+# by convention:
+# TAGS is used with emacs
+# tags is used with vi
+#
+# Hopefully the make is being done from $(NDB_TOP)/src
+# and your TAGS/tags file then is in the same directory.
+
+TAGS: DUMMY
+ rm -f TAGS
+ find $(NDB_TOP) -name "*.[ch]" | xargs $(ETAGS) --append
+ find $(NDB_TOP) -name "*.[ch]pp" | xargs $(ETAGS) --append
+
+tags: DUMMY
+ rm -f tags
+ find $(NDB_TOP) -name "*.[ch]" | xargs $(CTAGS) --append
+ find $(NDB_TOP) -name "*.[ch]pp" | xargs $(CTAGS) --append
+
+install:
+
+
+ebrowse: DUMMY
+ cd $(NDB_TOP); rm -f EBROWSE
+ cd $(NDB_TOP); find . -name "*.hpp" -or -name "*.cpp" -or -name "*.h" -or -name "*.c" > tmpfile~
+ cd $(NDB_TOP); ebrowse --file tmpfile~
+ cd $(NDB_TOP); rm -f tmpfile~