mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 05:22:25 +01:00
889cb7db35
into mysql.com:/home/jonas/src/mysql-4.1-ndb-jonas
878 lines
20 KiB
Text
878 lines
20 KiB
Text
# .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/mgmapi) \
|
|
-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/mgmapi) \
|
|
-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) -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~
|
|
|
|
srcdir = $(NDB_TOP)
|
|
top_distdir = $(NDB_TOP)/..
|
|
mkinstalldirs := /bin/sh ../mkinstalldirs
|
|
distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)/ndb
|
|
|
|
distdir:
|
|
$(mkinstalldirs) $(distdir)
|
|
@list='$(shell /bin/sh SrcDist.sh)'; for file in $$list; do \
|
|
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
|
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
|
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
|
dir="/$$dir"; \
|
|
$(mkinstalldirs) "$(distdir)$$dir"; \
|
|
else \
|
|
dir=''; \
|
|
fi; \
|
|
if test -f $$d/$$file; then \
|
|
test -f $(distdir)/$$file \
|
|
|| cp -p $$d/$$file $(distdir)/$$file \
|
|
|| exit 1; \
|
|
fi; \
|
|
done
|