diff --git a/make/bin.mk b/make/bin.mk index 24a8a156..73d2c750 100644 --- a/make/bin.mk +++ b/make/bin.mk @@ -4,6 +4,7 @@ # $Id$ include $(MODDIR)/make/defs.mk +include $(MODDIR)/make/defs-cpp.mk all install: clean distclean: diff --git a/make/defs-cpp.mk b/make/defs-cpp.mk new file mode 100644 index 00000000..357a382d --- /dev/null +++ b/make/defs-cpp.mk @@ -0,0 +1,577 @@ +# ----- compilation options +CREATE_DEVEL ?= true +#COMPILER_SUITE ?= clang +COMPILER_SUITE ?= gcc + +ifeq ($(ARCH),$(ARCH_32)) +PROJECT_CFLAGS += -m32 +PROJECT_CPPFLAGS += -m32 +PROJECT_LDFLAGS += -m32 +endif + +ifeq ($(ARCH),armv7hl) + PROJECT_CFLAGS += -fPIC + PROJECT_CPPFLAGS += -fPIC + PROJECT_LDFLAGS += +else ifeq ($(ARCH),aarch64) + PROJECT_CFLAGS += -fPIC + PROJECT_CPPFLAGS += -fPIC + PROJECT_LDFLAGS += +endif + +BUILD_USER := $(shell id -un) +JANWARE_USER ?= $(BUILD_USER) +JANWARE_CLIENT ?= jw +JANWARE_WIKI ?= $(JANWARE_CLIENT) +JANWARE_URL_DOC_MODULE ?= https://janware.com/wiki/$(JANWARE_WIKI)/assets/types/data/sw/$(PROJECT)/$(notdir $(CWD)) +JANWARE_URL_DOC_PROJECT ?= https://janware.com/wiki/$(JANWARE_WIKI)/assets/types/data/sw/$(PROJECT)/$(PROJECT) +PKG_VENDOR ?= janware GmbH + +FULL_NAME := $(shell $(ID) -nu | $(XARGS) $(GETENT) passwd | $(CUT) -d: -f5) +USE_PROJECT_LIB ?= true +EXPORT_PROJECT_LIB ?= $(USE_PROJECT_LIB) +USE_JW_BUILD ?= true +USE_EXCEPTIONS_IN_C ?= true +REENTRANT ?= true + +export REENTRANT + +ifeq ($(DEVELOPMENT),true) + export G_SLICE=always-malloc + export G_DEBUG=gc-friendly,resident-modules + export MALLOC_CHECK_=2 +endif + +USE_COMPILER_OPTIMIZATION_OPTS = false +USE_COMPILER_DEBUG_OPTS = true +COMPILE_DEBUG_CODE = true + +BUILD_CFLAGS += $(CFLAGS) +BUILD_CPPFLAGS += $(CPPFLAGS) +BUILD_LDFLAGS += $(LDFLAGS) + +BUILD_CFLAGS += -D_FILE_OFFSET_BITS=64 -Wall -Wno-unused-value -fexceptions -DPROJECT_STR=\"$(PROJECT)\" +BUILD_CPPFLAGS += -D_FILE_OFFSET_BITS=64 -Wall -Wno-unused-value -Wno-deprecated -DPROJECT_STR=\"$(PROJECT)\" +BUILD_LDFLAGS += -Wall + +LOG_QUAL_PREFIX ?= $(LOGID): + +ifneq ($(LOG_QUAL_PREFIX),) +PROJECT_CFLAGS += -DKEEP_FILES_OPEN -DLOG_QUAL_PREFIX=\"$(LOG_QUAL_PREFIX)\" +PROJECT_CPPFLAGS += -DKEEP_FILES_OPEN -DLOG_QUAL_PREFIX=\"$(LOG_QUAL_PREFIX)\" +endif + +ifeq ($(CATCH_ONLY_YERROR),true) +BUILD_CFLAGS += -DCATCH_ONLY_YERROR +BUILD_CPPFLAGS += -DCATCH_ONLY_YERROR +endif + +SYSCFG_DIR ?= /etc/sysconfig +SYSCFG_FILE ?= $(SYSCFG_DIR)/$(PROJECT) +OPTS_PID_FILE ?= $(PIDDIR)/$(PROJECT).pid + +USE_VERSION_MACROS ?= true +ifeq ($(USE_VERSION_MACROS),true) + BUILD_CFLAGS += -DVERSION=$(HEX_VERSION) -DVERSION_STR=\"$(VERSION)\" + BUILD_CPPFLAGS += -DVERSION=$(HEX_VERSION) -DVERSION_STR=\"$(VERSION)\" +endif + +ifeq ($(TARGET),mingw) + ifneq ($(wildcard /usr/bin/i686-w64-mingw32-gcc),) + MINGW_SYS_ROOT ?= /usr/i686-w64-mingw32/sys-root/mingw + CROSS_TOOL_DIR ?= + CROSS_TOOL_BIN_PREFIX ?= $(CROSS_TOOL_DIR)/usr/bin/i686-w64-mingw32- + PROJECT_LDFLAGS += -L$(MINGW_SYS_ROOT)/lib + PROJECT_CFLAGS += -I$(MINGW_SYS_ROOT)/include + PROJECT_CPPFLAGS += -I$(MINGW_SYS_ROOT)/include + else + CROSS_TOOL_DIR ?= /opt/cross-tools + CROSS_TOOL_BIN_PREFIX ?= $(CROSS_TOOL_DIR)/bin/i686-pc-mingw32- + endif + GCC ?= $(CROSS_TOOL_BIN_PREFIX)gcc + GPP ?= $(CROSS_TOOL_BIN_PREFIX)g++ + LD ?= $(CROSS_TOOL_BIN_PREFIX)ld + CLANG ?= $(CROSS_TOOL_BIN_PREFIX)clang + CLANGPP ?= $(CROSS_TOOL_BIN_PREFIX)clang++ + STRIP ?= $(CROSS_TOOL_BIN_PREFIX)strip + RANLIB ?= $(CROSS_TOOL_BIN_PREFIX)ranlib + AR ?= $(CROSS_TOOL_BIN_PREFIX)ar + WINDRES ?= $(CROSS_TOOL_BIN_PREFIX)windres + BUILD_LDFLAGS += -lws2_32 + USE_GFILTER ?= false + MS_LD ?= wine $(HOME)/local/mingw/packages/msvcpp/bin/LIB.EXE +else + GCC ?= gcc + GPP ?= g++ + LD ?= ld + CLANG ?= clang + CLANGPP ?= clang++ + STRIP ?= strip + RANLIB ?= ranlib + AR ?= ar +endif + +# compiler and linker +# gcc +GCC_VERSION := $(shell $(GCC) -v 2>&1 | $(SED) '/gcc.version/I !d; s/.*version *//I; s/ \+.*//') +GCC_VERSION_NUMBERS := $(subst ., ,$(GCC_VERSION)) +GCC_MAJOR := $(word 1,$(GCC_VERSION_NUMBERS)) +GCC_MINOR := $(word 2,$(GCC_VERSION_NUMBERS)) +GCC_REV := $(word 3,$(GCC_VERSION_NUMBERS)) + +LD_VERSION := $(shell $(LD) -V | $(SED) '/GNU ld/ !d; s/(.*)//; s/[^0-9.-]*//') +LD_VERSION_NUMBERS := $(subst ., ,$(LD_VERSION)) +LD_MAJOR := $(word 1,$(LD_VERSION_NUMBERS)) +LD_MINOR := $(word 2,$(LD_VERSION_NUMBERS)) +LD_REV := $(word 3,$(LD_VERSION_NUMBERS)) + +# clang +CLANG_CPPFLAGS += -Wno-unused-private-field -Wno-self-assign-field -Wno-overloaded-virtual + +ifneq ($(GCC_VERSION),4.1.0) +ifneq ($(GCC_VERSION),4.5.1) +BUILD_CFLAGS += -std=gnu99 +BUILD_CPPFLAGS += -std=c++11 +#BUILD_CPPFLAGS += -Wsuggest-override +endif +endif + +ifeq ($(shell test $(GCC_MAJOR) -ge 5; echo $$?),0) + ifeq ($(USE_CPP_FORCE_OVERRIDE),true) + GCC_CPPFLAGS += -Werror=suggest-override + endif +endif + +ifeq ($(USE_CPP_WARN_INCONSISTENT_OVERRIDE),true) + CLANG_CPPFLAGS += -Winconsistent-missing-override +endif + +# -- target files and dirs + +SRC_SUFFIX += $(sort $(suffix $(wildcard $(TOPDIR)/hdr/*))) +LOCAL_SRC += Makefile $(wildcard $(addprefix *,$(SRC_SUFFIX))) +SRC_HEADERED += $(shell if [ "$(LOCAL_SRC)" ]; then grep -ic "it services" $(LOCAL_SRC) | $(SED) '/:0$$/ d; s/:.*$$//'; fi) +SRC_UNHEADERED += $(filter-out $(SRC_HEADERED),$(LOCAL_SRC)) +LOCAL_C ?= $(wildcard *.c) +LOCAL_CPP ?= $(wildcard *.cc *.cpp *.C) +LOCAL_H ?= $(wildcard *.h *.H *.hpp) +SFILES ?= $(wildcard *.S) +#PREREQ_H += $(foreach dir,$(PREREQ_DIR),$(wildcard $(dir)/*.h)) +ALL_H += $(LOCAL_H) $(PREREQ_H) +SRC_ALL_CPP += $(LOCAL_C) $(LOCAL_CPP) $(LOCAL_H) +SRC_C += $(filter %.c, $(SRC_ALL_CPP)) +SRC_CPP += $(filter %.cc %.cpp %.C, $(SRC_ALL_CPP)) +OBJ += $(addprefix $(FLAVOUR_PREFIX),$(patsubst %.C,%.o,$(patsubst %.cpp,%.o,$(patsubst %.cc,%.o,$(patsubst %.c,%.o,$(filter %.c %.cpp %.cc %.C, $(SRC_ALL_CPP))))))) +OBJ += $(addprefix $(FLAVOUR_PREFIX),$(patsubst %.S,%.o,$(SFILES))) + +#PREREQ_C += $(foreach dir,$(PREREQ_DIR),$(wildcard $(dir)/*.c)) +#PREREQ_CPP += $(foreach dir,$(PREREQ_DIR),$(wildcard $(dir)/*.c)) \ +# $(foreach dir,$(PREREQ_DIR),$(wildcard $(dir)/*.cpp)) +#PREREQ_CSRC += $(PREREQ_H) $(PREREQ_C) $(PREREQ_CPP) +REQUIRED_DIR += $(patsubst %,$(MODDIR)/%,$(REQUIRED)) +REQUIRED_DONE += $(patsubst %,%/all.done,$(REQUIRED_DIR)) +REQUIRED_H += $(foreach dir,$(REQUIRED_DIR),$(wildcard $(dir)/*.h)) +REQUIRED_C += $(foreach dir,$(REQUIRED_DIR),$(wildcard $(dir)/*.c)) +REQUIRED_CPP += $(foreach dir,$(REQUIRED_DIR),$(wildcard $(dir)/*.cpp)) \ + $(foreach dir,$(PREREQ_DIR),$(wildcard $(dir)/*.cpp)) +REQUIRED_CSRC += $(REQUIRED_H) $(REQUIRED_C) $(REQUIRED_CPP) + +ALL_C += $(LOCAL_C) $(PREREQ_CPP) +ALL_CPP += $(LOCAL_CPP) $(PREREQ_CPP) +ALL_CSRC += $(LOCAL_CSRC) $(PREREQ_CSRC) + +# == + +ifeq ($(DEVELOPMENT),true) + BUILD_CFLAGS += -D_DEVELOPMENT_ + BUILD_CPPFLAGS+= -D_DEVELOPMENT_ +endif + +CORE += $(filter-out $(wildcard *.intern-state*),$(wildcard core core.* vgcore vgcore.*)) + +ifeq ($(GCC_MAJOR),4) + BUILD_CFLAGS += -DGCC_HASCLASSVISIBILITY + BUILD_CPPFLAGS+= -DGCC_HASCLASSVISIBILITY +endif + +ifeq ($(USE_QT),true) + include $(MODDIR)/make/qtversion.mk + include $(MODDIR)/make/qt-defs.mk +endif + +ifeq ($(USE_X),true) + BUILD_LDFLAGS += -L/usr/X11/$(SYSTEM_LIBDIR_NAME) -lXext -lX11 +endif + +LPPFLAGS += -lstdc++ + +ifeq ($(ARCH),x86_64) + ifneq ($(TARGET),mingw) + BUILD_CFLAGS += -fPIC + BUILD_CPPFLAGS+= -fPIC + LIBFLAGS += + endif +endif + +ifeq ($(GCC_MAJOR),2) +LPPFLAGS += -lm +BUILD_CFLAGS += -I/usr/local/include +BUILD_CPPFLAGS += -I/usr/local/include +else + ifeq ($(GCC_MAJOR),3) + ifeq ($(GCC_MINOR),3) + LPPFLAGS += -lgcc_s + # LPPFLAGS += -L/usr/local/gcc3.3/lib + endif + endif +endif + +ifeq ($(TARGET),mingw) +BUILD_CFLAGS += -DWIN32 +BUILD_CPPFLAGS += -DWIN32 +endif + +ifeq ($(LIBTYPE),shared) + ifneq ($(TARGET),mingw) + BUILD_LDFLAGS += -rdynamic + endif +endif + +# TODO: this shoud be only conditional, but breaks, because not all headers +# do a conditional include of timer headers, yet +GENERATE_FUNC_TIMERS = $(MODDIR)/YStopWatchThreadList/generate_func_timers.sh + +ifeq ($(LOG_THREAD_NAMES), true) + BUILD_CFLAGS += -DSLOG_THREAD_NAMES + BUILD_CPPFLAGS+= -DSLOG_THREAD_NAMES +endif + +CPP ?= g++ + +# ----- standard features, switched on with USE_XXX = true + +#include $(MODDIR)/make/lib-deps.mk + +ifeq ($(USE_GFILTER),true) + GFILT = sh $(firstword $(wildcard $(MODDIR)/contrib/gfilt/gfilt $(MODDIR)/bin/gfilt)) + ifneq ($(strip $(GFILT)),sh) + GPP = $(GFILT) + endif +endif + +ifeq "$(COMPILER_SUITE)" "gcc" +CC = $(GCC) +CPP = $(GPP) +LD = $(GPP) +endif + +ifeq "$(COMPILER_SUITE)" "clang" +CC = $(CLANG) +CPP = $(CLANGPP) +LD = $(CLANGPP) +endif + +ifeq ($(USE_PROJECT_LIB),true) + PROJECTLIB_LDFLAGS += -L$(TOPDIR)/lib -l$(LIBNAME) +endif + +ifneq ($(filter jw-build,$(PREREQ_BUILD)),) + ifeq ($(TARGET),mingw) + JW_BUILD_LDFLAGS += -lglib-2.0 -lws2_32 -lstdc++ + endif +endif + +ifeq ($(USE_SYSTEMD),true) + BUILD_CFLAGS += -D_USE_SYSTEMD_ $(shell pkg-config --cflags libsystemd) + BUILD_CPPFLAGS += -D_USE_SYSTEMD_ $(shell pkg-config --cflags libsystemd) + BUILD_LDFLAGS += $(shell pkg-config --libs libsystemd) +endif + +ifeq ($(USE_TIMER),true) + BUILD_CFLAGS += -D_USE_TIMER_ + BUILD_CPPFLAGS += -D_USE_TIMER_ +endif + +ifeq ($(USE_FAST_LOG),false) + BUILD_CFLAGS +=-D_USE_FAST_LOG_=0 + BUILD_CPPFLAGS +=-D_USE_FAST_LOG_=0 +endif + +ifeq ($(USE_YAMD),true) + CC = yamd-gcc +endif + +ifeq ($(USE_MPATROL),true) + BUILD_CFLAGS += -include /usr/include/mpatrol.h + #BUILD_CPPFLAGS += -include /usr/include/mpatrol.h + BUILD_LDFLAGS += -lmpatrolmt -lbfd -liberty +endif + +ifeq ($(USE_VALGRIND),true) + BUILD_CFLAGS += -include /usr/include/valgrind/memcheck.h -D_VALGRIND_ + BUILD_CPPFLAGS += -include /usr/include/valgrind/memcheck.h -D_VALGRIND_ + # BUILD_LDFLAGS += +endif + +ifeq ($(USE_MCHECK),true) + BUILD_LDFLAGS += -lmcheck +endif + +ifeq ($(USE_STACK_PROTECTOR),true) + BUILD_CFLAGS += -fstack-protector-all + BUILD_CPPFLAGS += -fstack-protector-all +# BUILD_CFLAGS += -fstack-protector +endif + +ifeq ($(USE_STACK_CHECKER),true) + ifeq "$(COMPILER_SUITE)" "clang" + BUILD_CFLAGS += -fsanitize=address -fno-omit-frame-pointer + BUILD_CPPFLAGS += -fsanitize=address -fno-omit-frame-pointer + BUILD_LDFLAGS += -fsanitize=address + else + endif + +endif + +ifeq ($(USE_DBMALLOC),true) + CONTRIB_LIBS += dbmalloc + BUILD_CFLAGS += -DDBMALLOC -DEXITFUN=_exit -I$(TOPDIR)/contrib/dbmalloc + BUILD_CPPFLAGS += -DDBMALLOC -DEXITFUN=_exit -I$(TOPDIR)/contrib/dbmalloc + BUILD_LDFLAGS += -ldbmalloc +endif + +ifeq ($(USE_DMALLOC),true) + BUILD_CFLAGS += -DDMALLOC -DDMALLOC_FUNC_CHECK -DSTORE_SEEN_COUNT + BUILD_CPPFLAGS += -DDMALLOC -DDMALLOC_FUNC_CHECK -DSTORE_SEEN_COUNT + BUILD_LDFLAGS += -ldmallocthcxx -ldmallocth +endif + +ifeq ($(USE_MEMWATCH),true) + BUILD_CFLAGS += -DMEMWATCH -DMW_STDIO + BUILD_CPPFLAGS += -DMEMWATCH -DMW_STDIO +endif + +ifeq ($(USE_EFENCE),true) + BUILD_CFLAGS += -DEFENCE + BUILD_CPPFLAGS += -DEFENCE + BUILD_LDFLAGS += -lefence +endif + +ifeq ($(USE_TRACING),true) + BUILD_CFLAGS += -D_DO_TRACE_ + BUILD_CPPFLAGS += -D_DO_TRACE_ +endif + +ifeq ($(USE_ASSERTIONS),false) + BUILD_CFLAGS += -DNDEBUG + BUILD_CPPFLAGS += -DNDEBUG +endif + +ifeq ($(COMPILE_DEBUG_CODE),true) + BUILD_CFLAGS += -D_DEBUG_ + BUILD_CPPFLAGS += -D_DEBUG_ +endif + +ifeq ($(COMPILE_DEBUG_LOG),true) + BUILD_CFLAGS += -D_LOG_DEBUG_ + BUILD_CPPFLAGS += -D_LOG_DEBUG_ +endif + +ifeq ($(USE_MPATROL),true) + BUILD_CFLAGS += -include $(MODDIR)/include/mpatrol.h + BUILD_CPPFLAGS += -include $(MODDIR)/include/mpatrol.h + BUILD_LDFLAGS += -lmpatrolmt -lbfd -liberty +endif + +ifeq ($(BREAK_ABI),true) + BUILD_CFLAGS += -D_BREAK_ABI_ + BUILD_CPPFLAGS += -D_BREAK_ABI_ +endif + +ifeq ($(USE_STACK_CHECK),true) + BUILD_CFLAGS += -fstack-check + BUILD_CPPFLAGS += -fstack-check +endif + +ifeq ($(USE_COMPILER_DEBUG_OPTS),true) + BUILD_CFLAGS += -gdwarf-2 -g3 -ggdb + BUILD_CPPFLAGS += -gdwarf-2 -g3 -ggdb + BUILD_LDFLAGS += -gdwarf-2 -g3 -ggdb +endif + +ifeq ($(CC),$(GCC)) + GCC_NO_OPT_FLAGS = \ + -fno-inline-functions-called-once \ + -fno-tree-loop-optimize \ + -fno-early-inlining \ + -fno-default-inline +else + ifeq ($(CC),$(CLANG)) + BUILD_CFLAGS += -Werror + BUILD_CPPFLAGS += -Werror + endif +endif + +ifeq ($(USE_COMPILER_OPTIMIZATION_OPTS),true) + BUILD_CFLAGS += -funroll-loops -O3 + BUILD_CPPFLAGS += -funroll-loops -O3 +else + NO_OPT_FLAGS = \ + -O0 -g -fno-inline -fno-omit-frame-pointer \ + -fno-builtin -fno-optimize-sibling-calls \ + $(GCC_NO_OPT_FLAGS) +# -fconserve-stack + + _NO_OPT_FLAGS = \ + -O0 \ + -fno-implicit-inline-templates \ + -fno-implement-inlines \ + -fno-default-inline \ + -fno-inline \ + -finline-limit=0 \ + -fkeep-inline-functions \ + -fno-inline-functions \ + $(GCC_NO_OPT_FLAGS) + + BUILD_CFLAGS += $(NO_OPT_FLAGS) + BUILD_CPPFLAGS += $(NO_OPT_FLAGS) + BUILD_LDFLAGS += $(NO_OPT_FLAGS) +endif + +ifeq ($(USE_EXCEPTIONS_IN_C),true) + BUILD_CFLAGS += -fexceptions + GCC_LDFLAGS += -shared-libgcc +endif + +ifeq ($(STRIP_SYMBOLS),true) + STRIP_DONE ?= strip.done +endif + +INCLUDE += $(LOCAL_INCLUDE) + +# force use of double quotes, allow header namespaces +ifeq ($(HDRDIR_SCOPE_SUFFIX),) + INCLUDE += -I. +else + INCLUDE += -iquote . +endif + +ifeq ($(USE_PROJECT_LIB),true) +INCLUDE += $(PROJECT_INCLUDE) -I$(TOPDIR)/include +LIBFLAGS += -L$(BUILD_LIBDIR) +endif + +INCLUDE += $(call proj_query, cflags $(PREREQ_BUILD) $(PROJECT)) + +LDFLAGS_QUERY_ARGS = $(addprefix --exclude ,$(LDFLAGS_EXCLUDE)) +LIBFLAGS += $(call proj_query, ldflags $(LDFLAGS_QUERY_ARGS) --add-self $(PREREQ_BUILD)) + +# the following is necessary, because not all projects have build.libname = none in project.conf +ifeq ($(USE_PROJECT_LIB),true) + LDFLAGS_QUERY_ARGS_SELF = --add-self +endif +LIBFLAGS += $(call proj_query, ldflags $(LDFLAGS_QUERY_ARGS) $(LDFLAGS_QUERY_ARGS_SELF) $(PROJECT)) + +ifeq ($(USE_SNDFILE),true) +LIBFLAGS += -lsndfile +endif + +ifeq ($(USE_FFTW),true) +LIBFLAGS += -lfftw3 +endif + +ifeq ($(USE_GLIB),true) + ifneq ($(TARGET),mingw) + PROJECT_CFLAGS += $(shell pkg-config --cflags glib-2.0) + PROJECT_CPPFLAGS += $(shell pkg-config --cflags glib-2.0) + LIBFLAGS += $(shell pkg-config --libs glib-2.0) + LIBFLAGS += -ldl -lpthread + else + ifneq ($(wildcard $(CROSS_TOOL_DIR)/include/glib-2.0),) + INCLUDE += -I$(CROSS_TOOL_DIR)/include/glib-2.0 -I$(CROSS_TOOL_DIR)/lib/glib-2.0/include + LIBFLAGS += -lglib-2.0 + else + PROJECT_CFLAGS += $(shell /usr/bin/i686-w64-mingw32-pkg-config --cflags glib-2.0) + PROJECT_CPPFLAGS += $(shell /usr/bin/i686-w64-mingw32-pkg-config --cflags glib-2.0) + LIBFLAGS += $(shell /usr/bin/i686-w64-mingw32-pkg-config --libs glib-2.0) + endif + endif +endif + +ifeq ($(CC),$(CLANG)) +COMPILER_CFLAGS += $(CLANG_CFLAGS) +COMPILER_CPPFLAGS += $(CLANG_CPPFLAGS) +COMPILER_LDFLAGS += $(CLANG_LDFLAGS) +endif + +ifeq ($(CC),$(GCC)) +COMPILER_CFLAGS += $(GCC_CFLAGS) +COMPILER_CPPFLAGS += $(GCC_CPPFLAGS) +COMPILER_LDFLAGS += $(GCC_LDFLAGS) +endif + +BUILD_CFLAGS += $(LOCAL_CFLAGS) $(PROJECT_CFLAGS) $(COMPLILER_CFLAGS) $(INCLUDE) +BUILD_CPPFLAGS += $(LOCAL_CPPFLAGS) $(PROJECT_CPPFLAGS) $(COMPILER_CPPFLAGS) $(INCLUDE) +BUILD_LDFLAGS += $(LOCAL_LDFLAGS) $(PROJECTLIB_LDFLAGS) $(PROJECT_LDFLAGS) $(COMPILER_LDFLAGS) $(LPPFLAGS) $(LIBFLAGS) +#RPM_REQUIRES = $(shell echo "$(RPM_REQUIRES_RUN) $(RPM_REQUIRES_DEVEL)" | $(add_flavour_prefix)) +RPM_REQUIRES += $(RPM_REQUIRES_RUN) $(RPM_REQUIRES_DEVEL) + +# -- LIB +INSTALLATION_FILE_TYPES += LIB +#BUILD_PIDIR = $(BUILD_LIBDIR) +#BUILD_PI = $(addprefix $(BUILD_PIDIR)/,$(PLUGIN)) +#INSTALL_PIDIR = $(INSTALL_LIBDIR) +#INSTALLED_PI = $(addprefix $(INSTALL_PIDIR)/,$(PLUGIN)) + +BUILD_LIBDIR = $(TOPDIR)/lib + +LOCAL_LIBS += $(CONTRIB_LIBS) $(PLUGIN) +ifeq ($(TARGET),mingw) + ifeq ($(MINGW_SYS_ROOT),) + CONTRIB_LIBS_PATH += $(CROSS_TOOL_DIR)/bin + else + CONTRIB_LIBS_PATH += $(MINGW_SYS_ROOT)/lib + endif +endif + +LIBTYPE ?= shared +INSTALL_LIBDIR ?= $(EXE_PREFIX)/lib +ifeq ($(USE_PROJECT_LIB),true) +LIBNAME ?= $(PROJECT) +MEMBERS += $(LIB_A)($(OBJ)) +VERSION_SCRIPT = $(BUILD_LIBDIR)/version.ldscript +# TODO: use something like this as unifying variable, there are far too many +# lib-related variables +LOCAL_LIBS += +ifneq ($(TARGET),mingw) +LIB_A = $(BUILD_LIBDIR)/lib$(LIBNAME).a +SO_SUFFIX = so.$(MAJOR_MINOR_RELEASE) +SO_PREFIX ?= lib +LIB_SO = $(BUILD_LIBDIR)/lib$(LIBNAME).$(SO_SUFFIX) +LINKS_SO += $(shell echo $(LIB_SO) | $(SED) -e "s/\.so\..*$$/.so/" | grep -v $(LIB_SO)) +INSTALLED_LINKS_SO += $(shell echo $(INSTALLED_LIB_SO) | $(SED) -e "s/\.so\..*$$/.so/" | grep -v $(INSTALLED_LIB_SO)) +INSTALLED_LIB_A = $(INSTALL_LIBDIR)/lib$(LIBNAME).a +else +LIB_A = $(BUILD_LIBDIR)/lib$(LIBNAME)-static.a +#WINRES_RC_TMPL = $(MODDIR)/make/winres-minimal.rc.tmpl +WINRES_RC_TMPL = $(MODDIR)/make/winres.rc.tmpl +WINRES_RC = $(BUILD_LIBDIR)/$(PROJECT).rc +WINRES_O = $(WINRES_RC).o +SO_SUFFIX = dll +SO_PREFIX ?= +LIB_DEF = $(BUILD_LIBDIR)/$(LIBNAME).def +MSVCPP_IMPLIB = $(BUILD_LIBDIR)/$(LIBNAME).lib +LIB_SO = $(BUILD_LIBDIR)/$(LIBNAME).dll +INSTALLED_LIB_A = $(INSTALL_LIBDIR)/lib$(LIBNAME).a +endif # mingw +BUILD_LIB += $(LIB_SO) +endif # USE_PROJECT_LIB +INSTALLED_LIB_SO = $(addprefix $(INSTALL_LIBDIR)/,$(notdir $(LIB_SO))) +INSTALLED_DEF = $(addprefix $(INSTALL_LIBDIR)/,$(wildcard *.lib *.exp)) +INSTALLED_LIB += $(addprefix $(INSTALL_LIBDIR)/,$(LOCAL_LIBS)) +BUILD_LIB += $(addprefix $(BUILD_LIBDIR)/,$(LOCAL_LIBS)) +INSTALLED_ALL_LIBS = $(addprefix $(INSTALL_LIBDIR)/,$(wildcard *.a)) +INSTALLED_LIB += $(INSTALLED_LIB_SO) $(INSTALLED_SHOBJS) \ + $(INSTALLED_LINKS_SO) $(sort $(INSTALLED_LIB_A) $(INSTALLED_ALL_LIBS)) \ + $(INSTALLED_DEF) + diff --git a/make/defs.mk b/make/defs.mk index 515cf61e..74e36680 100644 --- a/make/defs.mk +++ b/make/defs.mk @@ -51,10 +51,82 @@ AWK := $(shell $(WHICH) awk) GETENT := $(shell $(WHICH) getent) XARGS := $(shell $(WHICH) xargs) FIND := $(shell $(WHICH) find) +PRINTF := $(shell $(WHICH) printf) + +# makefile helpers +FIND_SUBDIRS := $(filter-out . .. nomake CVS $(IGNORE_SUBDIRS),\ + $(patsubst ./%,%,$(patsubst %/,%,$(dir $(shell $(FIND) . -maxdepth 2 -mindepth 2 -a \( -iname Makefile -o -iname GNUmakefile \)))))) +SUBDIRS_TO_ITERATE = $(filter-out $(IGNORE_SUBDIRS),$(SUBDIRS)) + +PKG_SH_EXE := /bin/bash $(MOD_SCRIPT_DIR)/pkg.sh +LOG_INSTALL_SH := $(PKG_SH_EXE) log-install +UPDATE_REPO_SH := /opt/packager-server/bin/packager-server schedule-rebuild + +ifdef INSTALL_LINK + INSTALL = $(SUDO) $(LOG_INSTALL_SH) -WA $(LOG_INSTALL_EXTRA_OPTS) + LINK_LIB = $(SUDO) $(LOG_INSTALL_SH) -LA $(LOG_INSTALL_EXTRA_OPTS) +else ifdef INSTALL_SYMLINK + INSTALL = $(SUDO) $(LOG_INSTALL_SH) -LA $(LOG_INSTALL_EXTRA_OPTS) + LINK_LIB = $(SUDO) $(LOG_INSTALL_SH) -LA $(LOG_INSTALL_EXTRA_OPTS) +else + ifdef INSTALL_LOG + INSTALL = $(LOG_INSTALL_SH) -p -l $(INSTALL_LOG) $(LOG_INSTALL_EXTRA_OPTS) + LINK_LIB = $(LOG_INSTALL_SH) -L -l $(INSTALL_LOG) $(LOG_INSTALL_EXTRA_OPTS) + else + ifndef INSTALL + INSTALL = install + endif + ifndef LINK_LIB + LINK_LIB = $(LOG_INSTALL_SH) -L + endif + endif +endif + +# ----- function definitions -# ----- custom functions reverse = $(if $(wordlist 2,2,$(1)),$(call reverse,$(wordlist 2,$(words $(1)),$(1))) $(firstword $(1)),$(1)) +define make_subdirs + set -e; for D in $(SUBDIRS) ; do make -C $$D ; done +endef + +define make_subdirs_target + set -e; for D in $(SUBDIRS) ; do make -C $$D $@; done +endef + +define install_local_cfg + $(INSTALL) -p -o $(CFGOWNER) -g $(CFGGROUP) -m $(CFGMODE) $< $@ +endef + +define cvs_files + sh $(MOD_SCRIPT_DIR)/scm.sh ls-files -f +endef + +define add_flavour_prefix + $(SED) "s/\([^ ][^ ]*\) *\([<>=]*\) *\([^ ]*\)/$(FLAVOUR_PREFIX)\1 \2 \3/g" +endef + +define beautify_lib_path + $(SED) 's/:/\n + /g' +endef + +ifeq ($(INCLUDE_REV_IN_VERSIONS),true) + version = $(shell $(CAT) $1/VERSION | $(SED) 's/-dev//; s/[ ]*//g') +else + version = $(shell $(CAT) $1/VERSION | $(SED) 's/-.*//; s/[ ]*//g') +endif + +define install_links + cwd="$(CWD)"; \ + echo "o in $(INSTALL_$(1)DIR):" ;\ + for f in $(notdir $(INSTALLED_$(1))); do \ + cd $(INSTALL_$(1)DIR); \ + echo " $(SUDO) ln -sf $$cwd/$$f" ; \ + $(SUDO) ln -sf $$cwd/$$f; \ + done; +endef + + # ----- standard variables ifneq ($(wildcard $(TOPDIR)/.git),) VCS ?= git @@ -202,7 +274,7 @@ ifeq ($(VERSION),) endif DIST_VERSION ?= $(patsubst %-dev,%,$(VERSION)) HEX_VERSION := $(shell echo $(DIST_VERSION) | \ - $(SED) 's/-dev//; s/pre[^\.]*//; s/F[^\.]//; s/[\.-]/ /g' | $(XARGS) printf "0x%02x%02x%02x%02x") + $(SED) 's/-dev//; s/pre[^\.]*//; s/F[^\.]//; s/[\.-]/ /g' | $(XARGS) $(PRINTF) "0x%02x%02x%02x%02x") BINARY_VERSION := $(shell echo $(PROJECT)_$(DIST_VERSION) | tr [a-z] [A-Z] | $(SED) 's/-[^-]*$$//; s/-/_/g') WINVERSION = $(subst .,_,$(VERSION)) LOCAL_VERSION = $(VERSION) @@ -234,215 +306,25 @@ FRESH_CVSDIR = $(HOME)/local/src/cvs.fresh IMAGE_DIR ?= $(CVS_ROOT_DIR)/images PCKG_DEPS_DIR = $(MODDIR)/make/deps.d PCKG_DEFS_DIR = $(MODDIR)/make/defs.d +HDRDIR_SCOPE_SUFFIX ?= $(PROJECT) -# ----- compilation options -CREATE_DEVEL ?= true -#COMPILER_SUITE ?= clang -COMPILER_SUITE ?= gcc +CONTRIB_MOD += $(addprefix contrib/,$(CONTRIB_LIBS)) +REQUIRED := $(CONTRIB_MOD) $(REQUIRED) -ifeq ($(ARCH),$(ARCH_32)) -PROJECT_CFLAGS += -m32 -PROJECT_CPPFLAGS += -m32 -PROJECT_LDFLAGS += -m32 -endif +PUBLIC_PATH_DEVEL_DOC = /proj/devel-docs +UPLOAD_URL_DEVEL_DOC = rsync_ssh://root@feitnix.jannet.de:/srv/www/htdocs/jannet.de_443/$(PUBLIC_PATH_DEVEL_DOC) -ifeq ($(ARCH),armv7hl) - PROJECT_CFLAGS += -fPIC - PROJECT_CPPFLAGS += -fPIC - PROJECT_LDFLAGS += -else ifeq ($(ARCH),aarch64) - PROJECT_CFLAGS += -fPIC - PROJECT_CPPFLAGS += -fPIC - PROJECT_LDFLAGS += -endif - -BUILD_USER := $(shell id -un) -JANWARE_USER ?= $(BUILD_USER) -JANWARE_CLIENT ?= jw -JANWARE_WIKI ?= $(JANWARE_CLIENT) -JANWARE_URL_DOC_MODULE ?= https://janware.com/wiki/$(JANWARE_WIKI)/assets/types/data/sw/$(PROJECT)/$(notdir $(CWD)) -JANWARE_URL_DOC_PROJECT ?= https://janware.com/wiki/$(JANWARE_WIKI)/assets/types/data/sw/$(PROJECT)/$(PROJECT) -PKG_VENDOR ?= janware GmbH - -FULL_NAME := $(shell $(ID) -nu | $(XARGS) $(GETENT) passwd | $(CUT) -d: -f5) -USE_PROJECT_LIB ?= true -EXPORT_PROJECT_LIB ?= $(USE_PROJECT_LIB) -USE_JW_BUILD ?= true -USE_EXCEPTIONS_IN_C ?= true -REENTRANT ?= true - -export REENTRANT - -USE_CFG_XXX_MK ?= true -ifeq ($(USE_CFG_XXX_MK),true) ifeq ($(DEVELOPMENT),true) -include $(MODDIR)/make/defs-dev.mk ifneq ($(wildcard $(TOPDIR)/make/cfg_dev.mk),) -include $(TOPDIR)/make/cfg_dev.mk endif - export G_SLICE=always-malloc - export G_DEBUG=gc-friendly,resident-modules - export MALLOC_CHECK_=2 else -include $(MODDIR)/make/defs-dist.mk ifneq ($(wildcard $(TOPDIR)/make/cfg_dist.mk),) -include $(TOPDIR)/make/cfg_dist.mk endif endif -endif - -USE_COMPILER_OPTIMIZATION_OPTS = false -USE_COMPILER_DEBUG_OPTS = true -COMPILE_DEBUG_CODE = true - -BUILD_CFLAGS += $(CFLAGS) -BUILD_CPPFLAGS += $(CPPFLAGS) -BUILD_LDFLAGS += $(LDFLAGS) - -BUILD_CFLAGS += -D_FILE_OFFSET_BITS=64 -Wall -Wno-unused-value -fexceptions -DPROJECT_STR=\"$(PROJECT)\" -BUILD_CPPFLAGS += -D_FILE_OFFSET_BITS=64 -Wall -Wno-unused-value -Wno-deprecated -DPROJECT_STR=\"$(PROJECT)\" -BUILD_LDFLAGS += -Wall - -LOG_QUAL_PREFIX ?= $(LOGID): - -ifneq ($(LOG_QUAL_PREFIX),) -PROJECT_CFLAGS += -DKEEP_FILES_OPEN -DLOG_QUAL_PREFIX=\"$(LOG_QUAL_PREFIX)\" -PROJECT_CPPFLAGS += -DKEEP_FILES_OPEN -DLOG_QUAL_PREFIX=\"$(LOG_QUAL_PREFIX)\" -endif - -ifeq ($(CATCH_ONLY_YERROR),true) -BUILD_CFLAGS += -DCATCH_ONLY_YERROR -BUILD_CPPFLAGS += -DCATCH_ONLY_YERROR -endif - -SYSCFG_DIR ?= /etc/sysconfig -SYSCFG_FILE ?= $(SYSCFG_DIR)/$(PROJECT) -OPTS_PID_FILE ?= $(PIDDIR)/$(PROJECT).pid - -USE_VERSION_MACROS ?= true -ifeq ($(USE_VERSION_MACROS),true) - BUILD_CFLAGS += -DVERSION=$(HEX_VERSION) -DVERSION_STR=\"$(VERSION)\" - BUILD_CPPFLAGS += -DVERSION=$(HEX_VERSION) -DVERSION_STR=\"$(VERSION)\" -endif - -ifeq ($(TARGET),mingw) - ifneq ($(wildcard /usr/bin/i686-w64-mingw32-gcc),) - MINGW_SYS_ROOT ?= /usr/i686-w64-mingw32/sys-root/mingw - CROSS_TOOL_DIR ?= - CROSS_TOOL_BIN_PREFIX ?= $(CROSS_TOOL_DIR)/usr/bin/i686-w64-mingw32- - PROJECT_LDFLAGS += -L$(MINGW_SYS_ROOT)/lib - PROJECT_CFLAGS += -I$(MINGW_SYS_ROOT)/include - PROJECT_CPPFLAGS += -I$(MINGW_SYS_ROOT)/include - else - CROSS_TOOL_DIR ?= /opt/cross-tools - CROSS_TOOL_BIN_PREFIX ?= $(CROSS_TOOL_DIR)/bin/i686-pc-mingw32- - endif - GCC ?= $(CROSS_TOOL_BIN_PREFIX)gcc - GPP ?= $(CROSS_TOOL_BIN_PREFIX)g++ - CLANG ?= $(CROSS_TOOL_BIN_PREFIX)clang - CLANGPP ?= $(CROSS_TOOL_BIN_PREFIX)clang++ - STRIP ?= $(CROSS_TOOL_BIN_PREFIX)strip - RANLIB ?= $(CROSS_TOOL_BIN_PREFIX)ranlib - AR ?= $(CROSS_TOOL_BIN_PREFIX)ar - WINDRES ?= $(CROSS_TOOL_BIN_PREFIX)windres - BUILD_LDFLAGS += -lws2_32 - USE_GFILTER ?= false - MS_LD ?= wine $(HOME)/local/mingw/packages/msvcpp/bin/LIB.EXE -else - GCC ?= gcc - GPP ?= g++ - CLANG ?= clang - CLANGPP ?= clang++ - STRIP ?= strip - RANLIB ?= ranlib - AR ?= ar -endif - -# makefile helpers -FIND_SUBDIRS := $(filter-out . .. nomake CVS $(IGNORE_SUBDIRS),\ - $(patsubst ./%,%,$(patsubst %/,%,$(dir $(shell $(FIND) . -maxdepth 2 -mindepth 2 -a \( -iname Makefile -o -iname GNUmakefile \)))))) -SUBDIRS_TO_ITERATE = $(filter-out $(IGNORE_SUBDIRS),$(SUBDIRS)) - -# compiler and linker -# gcc -GCC_VERSION := $(shell $(GCC) -v 2>&1 | $(SED) '/gcc.version/I !d; s/.*version *//I; s/ \+.*//') -GCC_VERSION_NUMBERS := $(subst ., ,$(GCC_VERSION)) -GCC_MAJOR := $(word 1,$(GCC_VERSION_NUMBERS)) -GCC_MINOR := $(word 2,$(GCC_VERSION_NUMBERS)) -GCC_REV := $(word 3,$(GCC_VERSION_NUMBERS)) - -LD_VERSION := $(shell ld -V | $(SED) '/GNU ld/ !d; s/(.*)//; s/[^0-9.-]*//') -LD_VERSION_NUMBERS := $(subst ., ,$(LD_VERSION)) -LD_MAJOR := $(word 1,$(LD_VERSION_NUMBERS)) -LD_MINOR := $(word 2,$(LD_VERSION_NUMBERS)) -LD_REV := $(word 3,$(LD_VERSION_NUMBERS)) - -UPDATE_REPO_SH := /opt/packager-server/bin/packager-server schedule-rebuild - -# clang -CLANG_CPPFLAGS += -Wno-unused-private-field -Wno-self-assign-field -Wno-overloaded-virtual - -ifneq ($(GCC_VERSION),4.1.0) -ifneq ($(GCC_VERSION),4.5.1) -BUILD_CFLAGS += -std=gnu99 -BUILD_CPPFLAGS += -std=c++11 -#BUILD_CPPFLAGS += -Wsuggest-override -endif -endif - -ifeq ($(shell test $(GCC_MAJOR) -ge 5; echo $$?),0) - ifeq ($(USE_CPP_FORCE_OVERRIDE),true) - GCC_CPPFLAGS += -Werror=suggest-override - endif -endif - -ifeq ($(USE_CPP_WARN_INCONSISTENT_OVERRIDE),true) - CLANG_CPPFLAGS += -Winconsistent-missing-override -endif - -# -- target files and dirs - -HDRDIR_SCOPE_SUFFIX ?= $(PROJECT) -SRC_SUFFIX += $(sort $(suffix $(wildcard $(TOPDIR)/hdr/*))) -LOCAL_SRC += Makefile $(wildcard $(addprefix *,$(SRC_SUFFIX))) -SRC_HEADERED += $(shell if [ "$(LOCAL_SRC)" ]; then grep -ic "it services" $(LOCAL_SRC) | $(SED) '/:0$$/ d; s/:.*$$//'; fi) -SRC_UNHEADERED += $(filter-out $(SRC_HEADERED),$(LOCAL_SRC)) -LOCAL_C ?= $(wildcard *.c) -LOCAL_CPP ?= $(wildcard *.cc *.cpp *.C) -LOCAL_H ?= $(wildcard *.h *.H *.hpp) -SFILES ?= $(wildcard *.S) -#PREREQ_H += $(foreach dir,$(PREREQ_DIR),$(wildcard $(dir)/*.h)) -ALL_H += $(LOCAL_H) $(PREREQ_H) -SRC_ALL_CPP += $(LOCAL_C) $(LOCAL_CPP) $(LOCAL_H) -SRC_C += $(filter %.c, $(SRC_ALL_CPP)) -SRC_CPP += $(filter %.cc %.cpp %.C, $(SRC_ALL_CPP)) -OBJ += $(addprefix $(FLAVOUR_PREFIX),$(patsubst %.C,%.o,$(patsubst %.cpp,%.o,$(patsubst %.cc,%.o,$(patsubst %.c,%.o,$(filter %.c %.cpp %.cc %.C, $(SRC_ALL_CPP))))))) -OBJ += $(addprefix $(FLAVOUR_PREFIX),$(patsubst %.S,%.o,$(SFILES))) - -#PREREQ_DIR += $(addprefix $(MODDIR)/,$(LOCAL_PREREQ)) -#PREREQ_DONE += $(addsuffix /all.done,$(PREREQ_DIR)) -#PREREQ_C += $(foreach dir,$(PREREQ_DIR),$(wildcard $(dir)/*.c)) -#PREREQ_CPP += $(foreach dir,$(PREREQ_DIR),$(wildcard $(dir)/*.c)) \ -# $(foreach dir,$(PREREQ_DIR),$(wildcard $(dir)/*.cpp)) -#PREREQ_CSRC += $(PREREQ_H) $(PREREQ_C) $(PREREQ_CPP) - -CONTRIB_MOD += $(addprefix contrib/,$(CONTRIB_LIBS)) -REQUIRED := $(CONTRIB_MOD) $(REQUIRED) - -REQUIRED_DIR += $(patsubst %,$(MODDIR)/%,$(REQUIRED)) -REQUIRED_DONE += $(patsubst %,%/all.done,$(REQUIRED_DIR)) -REQUIRED_H += $(foreach dir,$(REQUIRED_DIR),$(wildcard $(dir)/*.h)) -REQUIRED_C += $(foreach dir,$(REQUIRED_DIR),$(wildcard $(dir)/*.c)) -REQUIRED_CPP += $(foreach dir,$(REQUIRED_DIR),$(wildcard $(dir)/*.cpp)) \ - $(foreach dir,$(PREREQ_DIR),$(wildcard $(dir)/*.cpp)) -REQUIRED_CSRC += $(REQUIRED_H) $(REQUIRED_C) $(REQUIRED_CPP) - -ALL_C += $(LOCAL_C) $(PREREQ_CPP) -ALL_CPP += $(LOCAL_CPP) $(PREREQ_CPP) -ALL_CSRC += $(LOCAL_CSRC) $(PREREQ_CSRC) - -PUBLIC_PATH_DEVEL_DOC = /proj/devel-docs -UPLOAD_URL_DEVEL_DOC = rsync_ssh://root@feitnix.jannet.de:/srv/www/htdocs/jannet.de_443/$(PUBLIC_PATH_DEVEL_DOC) IMAGES += $(wildcard *.png *.jpg *.bmp *.gif *.ico *.svg) FONTS += $(wildcard *.woff *.svg) @@ -491,65 +373,6 @@ BUILD_DOC ?= $(DOC_PREFIX) INSTALL_DOCDIR ?= $(DOC_PREFIX) INSTALLED_DOC ?= $(addprefix $(INSTALL_DOCDIR)/,$(DOCS)) -# -- LIB -INSTALLATION_FILE_TYPES += LIB -#BUILD_PIDIR = $(BUILD_LIBDIR) -#BUILD_PI = $(addprefix $(BUILD_PIDIR)/,$(PLUGIN)) -#INSTALL_PIDIR = $(INSTALL_LIBDIR) -#INSTALLED_PI = $(addprefix $(INSTALL_PIDIR)/,$(PLUGIN)) - -BUILD_LIBDIR = $(TOPDIR)/lib - -LOCAL_LIBS += $(CONTRIB_LIBS) $(PLUGIN) -ifeq ($(TARGET),mingw) - ifeq ($(MINGW_SYS_ROOT),) - CONTRIB_LIBS_PATH += $(CROSS_TOOL_DIR)/bin - else - CONTRIB_LIBS_PATH += $(MINGW_SYS_ROOT)/lib - endif -endif - -LIBTYPE ?= shared -INSTALL_LIBDIR ?= $(EXE_PREFIX)/lib -ifeq ($(USE_PROJECT_LIB),true) -LIBNAME ?= $(PROJECT) -MEMBERS += $(LIB_A)($(OBJ)) -VERSION_SCRIPT = $(BUILD_LIBDIR)/version.ldscript -# TODO: use something like this as unifying variable, there are far too many -# lib-related variables -LOCAL_LIBS += -ifneq ($(TARGET),mingw) -LIB_A = $(BUILD_LIBDIR)/lib$(LIBNAME).a -SO_SUFFIX = so.$(MAJOR_MINOR_RELEASE) -SO_PREFIX ?= lib -LIB_SO = $(BUILD_LIBDIR)/lib$(LIBNAME).$(SO_SUFFIX) -LINKS_SO += $(shell echo $(LIB_SO) | $(SED) -e "s/\.so\..*$$/.so/" | grep -v $(LIB_SO)) -INSTALLED_LINKS_SO += $(shell echo $(INSTALLED_LIB_SO) | $(SED) -e "s/\.so\..*$$/.so/" | grep -v $(INSTALLED_LIB_SO)) -INSTALLED_LIB_A = $(INSTALL_LIBDIR)/lib$(LIBNAME).a -else -LIB_A = $(BUILD_LIBDIR)/lib$(LIBNAME)-static.a -#WINRES_RC_TMPL = $(MODDIR)/make/winres-minimal.rc.tmpl -WINRES_RC_TMPL = $(MODDIR)/make/winres.rc.tmpl -WINRES_RC = $(BUILD_LIBDIR)/$(PROJECT).rc -WINRES_O = $(WINRES_RC).o -SO_SUFFIX = dll -SO_PREFIX ?= -LIB_DEF = $(BUILD_LIBDIR)/$(LIBNAME).def -MSVCPP_IMPLIB = $(BUILD_LIBDIR)/$(LIBNAME).lib -LIB_SO = $(BUILD_LIBDIR)/$(LIBNAME).dll -INSTALLED_LIB_A = $(INSTALL_LIBDIR)/lib$(LIBNAME).a -endif # mingw -BUILD_LIB += $(LIB_SO) -endif # USE_PROJECT_LIB -INSTALLED_LIB_SO = $(addprefix $(INSTALL_LIBDIR)/,$(notdir $(LIB_SO))) -INSTALLED_DEF = $(addprefix $(INSTALL_LIBDIR)/,$(wildcard *.lib *.exp)) -INSTALLED_LIB += $(addprefix $(INSTALL_LIBDIR)/,$(LOCAL_LIBS)) -BUILD_LIB += $(addprefix $(BUILD_LIBDIR)/,$(LOCAL_LIBS)) -INSTALLED_ALL_LIBS = $(addprefix $(INSTALL_LIBDIR)/,$(wildcard *.a)) -INSTALLED_LIB += $(INSTALLED_LIB_SO) $(INSTALLED_SHOBJS) \ - $(INSTALLED_LINKS_SO) $(sort $(INSTALLED_LIB_A) $(INSTALLED_ALL_LIBS)) \ - $(INSTALLED_DEF) - ## -- PI #BUILD_PIDIR = $(BUILD_LIBDIR) #BUILD_PI = $(addprefix $(BUILD_PIDIR)/,$(PLUGIN)) @@ -734,140 +557,9 @@ BUILD_PKG_CONFIG = $(BUILD_PKG_CONFIGDIR)/$(LOCAL_PKG_CONFIG) INSTALLED_PKG_CONFIG = $(addprefix $(INSTALL_PKG_CONFIGDIR)/,$(PKG_CONFIG)) endif -# == - -ifeq ($(DEVELOPMENT),true) - BUILD_CFLAGS += -D_DEVELOPMENT_ - BUILD_CPPFLAGS+= -D_DEVELOPMENT_ -endif - -CORE += $(filter-out $(wildcard *.intern-state*),$(wildcard core core.* vgcore vgcore.*)) - -ifeq ($(GCC_MAJOR),4) - BUILD_CFLAGS += -DGCC_HASCLASSVISIBILITY - BUILD_CPPFLAGS+= -DGCC_HASCLASSVISIBILITY -endif - -ifeq ($(USE_QT),true) - include $(MODDIR)/make/qtversion.mk - include $(MODDIR)/make/qt-defs.mk -endif - -ifeq ($(USE_X),true) - BUILD_LDFLAGS += -L/usr/X11/$(SYSTEM_LIBDIR_NAME) -lXext -lX11 -endif - -LPPFLAGS += -lstdc++ - -ifeq ($(ARCH),x86_64) - ifneq ($(TARGET),mingw) - BUILD_CFLAGS += -fPIC - BUILD_CPPFLAGS+= -fPIC - LIBFLAGS += - endif -endif - -ifeq ($(GCC_MAJOR),2) -LPPFLAGS += -lm -BUILD_CFLAGS += -I/usr/local/include -BUILD_CPPFLAGS += -I/usr/local/include -else - ifeq ($(GCC_MAJOR),3) - ifeq ($(GCC_MINOR),3) - LPPFLAGS += -lgcc_s - # LPPFLAGS += -L/usr/local/gcc3.3/lib - endif - endif -endif - -ifeq ($(TARGET),mingw) -BUILD_CFLAGS += -DWIN32 -BUILD_CPPFLAGS += -DWIN32 -endif - -ifeq ($(LIBTYPE),shared) - ifneq ($(TARGET),mingw) - BUILD_LDFLAGS += -rdynamic - endif -endif - -# TODO: this shoud be only conditional, but breaks, because not all headers -# do a conditional include of timer headers, yet -GENERATE_FUNC_TIMERS = $(MODDIR)/YStopWatchThreadList/generate_func_timers.sh - -PKG_SH_EXE = /bin/bash $(MOD_SCRIPT_DIR)/pkg.sh -LOG_INSTALL_SH = $(PKG_SH_EXE) log-install - -ifeq ($(LOG_THREAD_NAMES), true) - BUILD_CFLAGS += -DSLOG_THREAD_NAMES - BUILD_CPPFLAGS+= -DSLOG_THREAD_NAMES -endif - -ifdef INSTALL_LINK - INSTALL = $(SUDO) $(LOG_INSTALL_SH) -WA $(LOG_INSTALL_EXTRA_OPTS) - LINK_LIB = $(SUDO) $(LOG_INSTALL_SH) -LA $(LOG_INSTALL_EXTRA_OPTS) -else ifdef INSTALL_SYMLINK - INSTALL = $(SUDO) $(LOG_INSTALL_SH) -LA $(LOG_INSTALL_EXTRA_OPTS) - LINK_LIB = $(SUDO) $(LOG_INSTALL_SH) -LA $(LOG_INSTALL_EXTRA_OPTS) -else - ifdef INSTALL_LOG - INSTALL = $(LOG_INSTALL_SH) -p -l $(INSTALL_LOG) $(LOG_INSTALL_EXTRA_OPTS) - LINK_LIB = $(LOG_INSTALL_SH) -L -l $(INSTALL_LOG) $(LOG_INSTALL_EXTRA_OPTS) - else - ifndef INSTALL - INSTALL = install - endif - ifndef LINK_LIB - LINK_LIB = $(LOG_INSTALL_SH) -L - endif - endif -endif - INSTALL_FILE ?= $(INSTALL) INSTALL_DIR ?= $(INSTALL) -# ----- function definitions - -define make_subdirs - set -e; for D in $(SUBDIRS) ; do make -C $$D ; done -endef - -define make_subdirs_target - set -e; for D in $(SUBDIRS) ; do make -C $$D $@; done -endef - -define install_local_cfg - $(INSTALL) -p -o $(CFGOWNER) -g $(CFGGROUP) -m $(CFGMODE) $< $@ -endef - -define cvs_files - sh $(MOD_SCRIPT_DIR)/scm.sh ls-files -f -endef - -define add_flavour_prefix - $(SED) "s/\([^ ][^ ]*\) *\([<>=]*\) *\([^ ]*\)/$(FLAVOUR_PREFIX)\1 \2 \3/g" -endef - -define beautify_lib_path - $(SED) 's/:/\n + /g' -endef - -ifeq ($(INCLUDE_REV_IN_VERSIONS),true) - version = $(shell $(CAT) $1/VERSION | $(SED) 's/-dev//; s/[ ]*//g') -else - version = $(shell $(CAT) $1/VERSION | $(SED) 's/-.*//; s/[ ]*//g') -endif - -define install_links - cwd="$(CWD)"; \ - echo "o in $(INSTALL_$(1)DIR):" ;\ - for f in $(notdir $(INSTALLED_$(1))); do \ - cd $(INSTALL_$(1)DIR); \ - echo " $(SUDO) ln -sf $$cwd/$$f" ; \ - $(SUDO) ln -sf $$cwd/$$f; \ - done; -endef - # ----- local.mk ifneq ($(wildcard $(MODDIR)/make/local.mk),) @@ -882,232 +574,6 @@ ifneq ($(wildcard local.mk),) include local.mk endif -# ----- standard features, switched on with USE_XXX = true - -CPP ?= g++ - -ifeq ($(USE_GFILTER),true) - GFILT = sh $(firstword $(wildcard $(MODDIR)/contrib/gfilt/gfilt $(MODDIR)/bin/gfilt)) - ifneq ($(strip $(GFILT)),sh) - GPP = $(GFILT) - endif -endif - -ifeq "$(COMPILER_SUITE)" "gcc" -CC = $(GCC) -CPP = $(GPP) -LD = $(GPP) -endif - -ifeq "$(COMPILER_SUITE)" "clang" -CC = $(CLANG) -CPP = $(CLANGPP) -LD = $(CLANGPP) -endif - -ifeq ($(USE_PROJECT_LIB),true) - PROJECTLIB_LDFLAGS += -L$(TOPDIR)/lib -l$(LIBNAME) -endif - -ifneq ($(filter jw-build,$(PREREQ_BUILD)),) - ifeq ($(TARGET),mingw) - JW_BUILD_LDFLAGS += -lglib-2.0 -lws2_32 -lstdc++ - endif -endif - -ifeq ($(USE_SYSTEMD),true) - BUILD_CFLAGS += -D_USE_SYSTEMD_ $(shell pkg-config --cflags libsystemd) - BUILD_CPPFLAGS += -D_USE_SYSTEMD_ $(shell pkg-config --cflags libsystemd) - BUILD_LDFLAGS += $(shell pkg-config --libs libsystemd) -endif - -ifeq ($(USE_TIMER),true) - BUILD_CFLAGS += -D_USE_TIMER_ - BUILD_CPPFLAGS += -D_USE_TIMER_ -endif - -ifeq ($(USE_FAST_LOG),false) - BUILD_CFLAGS +=-D_USE_FAST_LOG_=0 - BUILD_CPPFLAGS +=-D_USE_FAST_LOG_=0 -endif - -ifeq ($(USE_YAMD),true) - CC = yamd-gcc -endif - -ifeq ($(USE_MPATROL),true) - BUILD_CFLAGS += -include /usr/include/mpatrol.h - #BUILD_CPPFLAGS += -include /usr/include/mpatrol.h - BUILD_LDFLAGS += -lmpatrolmt -lbfd -liberty -endif - -ifeq ($(USE_VALGRIND),true) - BUILD_CFLAGS += -include /usr/include/valgrind/memcheck.h -D_VALGRIND_ - BUILD_CPPFLAGS += -include /usr/include/valgrind/memcheck.h -D_VALGRIND_ - # BUILD_LDFLAGS += -endif - -ifeq ($(USE_MCHECK),true) - BUILD_LDFLAGS += -lmcheck -endif - -ifeq ($(USE_STACK_PROTECTOR),true) - BUILD_CFLAGS += -fstack-protector-all - BUILD_CPPFLAGS += -fstack-protector-all -# BUILD_CFLAGS += -fstack-protector -endif - -ifeq ($(USE_STACK_CHECKER),true) - ifeq "$(COMPILER_SUITE)" "clang" - BUILD_CFLAGS += -fsanitize=address -fno-omit-frame-pointer - BUILD_CPPFLAGS += -fsanitize=address -fno-omit-frame-pointer - BUILD_LDFLAGS += -fsanitize=address - else - endif - -endif - -ifeq ($(USE_DBMALLOC),true) - CONTRIB_LIBS += dbmalloc - BUILD_CFLAGS += -DDBMALLOC -DEXITFUN=_exit -I$(TOPDIR)/contrib/dbmalloc - BUILD_CPPFLAGS += -DDBMALLOC -DEXITFUN=_exit -I$(TOPDIR)/contrib/dbmalloc - BUILD_LDFLAGS += -ldbmalloc -endif - -ifeq ($(USE_DMALLOC),true) - BUILD_CFLAGS += -DDMALLOC -DDMALLOC_FUNC_CHECK -DSTORE_SEEN_COUNT - BUILD_CPPFLAGS += -DDMALLOC -DDMALLOC_FUNC_CHECK -DSTORE_SEEN_COUNT - BUILD_LDFLAGS += -ldmallocthcxx -ldmallocth -endif - -ifeq ($(USE_MEMWATCH),true) - BUILD_CFLAGS += -DMEMWATCH -DMW_STDIO - BUILD_CPPFLAGS += -DMEMWATCH -DMW_STDIO -endif - -ifeq ($(USE_EFENCE),true) - BUILD_CFLAGS += -DEFENCE - BUILD_CPPFLAGS += -DEFENCE - BUILD_LDFLAGS += -lefence -endif - -ifeq ($(USE_TRACING),true) - BUILD_CFLAGS += -D_DO_TRACE_ - BUILD_CPPFLAGS += -D_DO_TRACE_ -endif - -ifeq ($(USE_ASSERTIONS),false) - BUILD_CFLAGS += -DNDEBUG - BUILD_CPPFLAGS += -DNDEBUG -endif - -ifeq ($(COMPILE_DEBUG_CODE),true) - BUILD_CFLAGS += -D_DEBUG_ - BUILD_CPPFLAGS += -D_DEBUG_ -endif - -ifeq ($(COMPILE_DEBUG_LOG),true) - BUILD_CFLAGS += -D_LOG_DEBUG_ - BUILD_CPPFLAGS += -D_LOG_DEBUG_ -endif - -ifeq ($(USE_MPATROL),true) - BUILD_CFLAGS += -include $(MODDIR)/include/mpatrol.h - BUILD_CPPFLAGS += -include $(MODDIR)/include/mpatrol.h - BUILD_LDFLAGS += -lmpatrolmt -lbfd -liberty -endif - -ifeq ($(BREAK_ABI),true) - BUILD_CFLAGS += -D_BREAK_ABI_ - BUILD_CPPFLAGS += -D_BREAK_ABI_ -endif - -ifeq ($(USE_STACK_CHECK),true) - BUILD_CFLAGS += -fstack-check - BUILD_CPPFLAGS += -fstack-check -endif - -ifeq ($(USE_COMPILER_DEBUG_OPTS),true) - BUILD_CFLAGS += -gdwarf-2 -g3 -ggdb - BUILD_CPPFLAGS += -gdwarf-2 -g3 -ggdb - BUILD_LDFLAGS += -gdwarf-2 -g3 -ggdb -endif - -ifeq ($(CC),$(GCC)) - GCC_NO_OPT_FLAGS = \ - -fno-inline-functions-called-once \ - -fno-tree-loop-optimize \ - -fno-early-inlining \ - -fno-default-inline -else - ifeq ($(CC),$(CLANG)) - BUILD_CFLAGS += -Werror - BUILD_CPPFLAGS += -Werror - endif -endif - -ifeq ($(USE_COMPILER_OPTIMIZATION_OPTS),true) - BUILD_CFLAGS += -funroll-loops -O3 - BUILD_CPPFLAGS += -funroll-loops -O3 -else - NO_OPT_FLAGS = \ - -O0 -g -fno-inline -fno-omit-frame-pointer \ - -fno-builtin -fno-optimize-sibling-calls \ - $(GCC_NO_OPT_FLAGS) -# -fconserve-stack - - _NO_OPT_FLAGS = \ - -O0 \ - -fno-implicit-inline-templates \ - -fno-implement-inlines \ - -fno-default-inline \ - -fno-inline \ - -finline-limit=0 \ - -fkeep-inline-functions \ - -fno-inline-functions \ - $(GCC_NO_OPT_FLAGS) - - BUILD_CFLAGS += $(NO_OPT_FLAGS) - BUILD_CPPFLAGS += $(NO_OPT_FLAGS) - BUILD_LDFLAGS += $(NO_OPT_FLAGS) -endif - -ifeq ($(USE_EXCEPTIONS_IN_C),true) - BUILD_CFLAGS += -fexceptions - GCC_LDFLAGS += -shared-libgcc -endif - -ifeq ($(STRIP_SYMBOLS),true) - STRIP_DONE ?= strip.done -endif - -INCLUDE += $(LOCAL_INCLUDE) - -# force use of double quotes, allow header namespaces -ifeq ($(HDRDIR_SCOPE_SUFFIX),) - INCLUDE += -I. -else - INCLUDE += -iquote . -endif - -ifeq ($(USE_PROJECT_LIB),true) -INCLUDE += $(PROJECT_INCLUDE) -I$(TOPDIR)/include -LIBFLAGS += -L$(BUILD_LIBDIR) -endif - -INCLUDE += $(call proj_query, cflags $(PREREQ_BUILD) $(PROJECT)) - -LDFLAGS_QUERY_ARGS = $(addprefix --exclude ,$(LDFLAGS_EXCLUDE)) -LIBFLAGS += $(call proj_query, ldflags $(LDFLAGS_QUERY_ARGS) --add-self $(PREREQ_BUILD)) - -# the following is necessary, because not all projects have build.libname = none in project.conf -ifeq ($(USE_PROJECT_LIB),true) - LDFLAGS_QUERY_ARGS_SELF = --add-self -endif -LIBFLAGS += $(call proj_query, ldflags $(LDFLAGS_QUERY_ARGS) $(LDFLAGS_QUERY_ARGS_SELF) $(PROJECT)) - -#include $(MODDIR)/make/lib-deps.mk - BTOOLS_DIR ?= $(call proj_dir, dspider-btools) #DSPCD_DIR ?= $(call proj_dir, dspcd) #DSPCD_EC_DIR ?= $(call proj_dir, dspcd-ec) @@ -1122,57 +588,6 @@ SITE_DIR ?= $(call proj_dir, site) VALDI_DIR ?= $(call proj_dir, valdi) XCHANGE_DIR ?= $(call proj_dir, xchange) -#PREREQ_INSTALL ?= $(PREREQ_BUILD) -#PREREQ_RUN ?= $(PREREQ_INSTALL) - -# TODO: remove this -#PREREQ_BUILD += $(PREREQ_RUN) -#PREREQ_BUILD += $(PREREQ_INSTALL) - -ifeq ($(USE_SNDFILE),true) -LIBFLAGS += -lsndfile -endif - -ifeq ($(USE_FFTW),true) -LIBFLAGS += -lfftw3 -endif - -ifeq ($(USE_GLIB),true) - ifneq ($(TARGET),mingw) - PROJECT_CFLAGS += $(shell pkg-config --cflags glib-2.0) - PROJECT_CPPFLAGS += $(shell pkg-config --cflags glib-2.0) - LIBFLAGS += $(shell pkg-config --libs glib-2.0) - LIBFLAGS += -ldl -lpthread - else - ifneq ($(wildcard $(CROSS_TOOL_DIR)/include/glib-2.0),) - INCLUDE += -I$(CROSS_TOOL_DIR)/include/glib-2.0 -I$(CROSS_TOOL_DIR)/lib/glib-2.0/include - LIBFLAGS += -lglib-2.0 - else - PROJECT_CFLAGS += $(shell /usr/bin/i686-w64-mingw32-pkg-config --cflags glib-2.0) - PROJECT_CPPFLAGS += $(shell /usr/bin/i686-w64-mingw32-pkg-config --cflags glib-2.0) - LIBFLAGS += $(shell /usr/bin/i686-w64-mingw32-pkg-config --libs glib-2.0) - endif - endif -endif - -ifeq ($(CC),$(CLANG)) -COMPILER_CFLAGS += $(CLANG_CFLAGS) -COMPILER_CPPFLAGS += $(CLANG_CPPFLAGS) -COMPILER_LDFLAGS += $(CLANG_LDFLAGS) -endif - -ifeq ($(CC),$(GCC)) -COMPILER_CFLAGS += $(GCC_CFLAGS) -COMPILER_CPPFLAGS += $(GCC_CPPFLAGS) -COMPILER_LDFLAGS += $(GCC_LDFLAGS) -endif - -BUILD_CFLAGS += $(LOCAL_CFLAGS)$(PROJECT_CFLAGS) $(COMPLILER_CFLAGS) $(INCLUDE) -BUILD_CPPFLAGS += $(LOCAL_CPPFLAGS) $(PROJECT_CPPFLAGS) $(COMPILER_CPPFLAGS) $(INCLUDE) -BUILD_LDFLAGS += $(LOCAL_LDFLAGS) $(PROJECTLIB_LDFLAGS) $(PROJECT_LDFLAGS) $(COMPILER_LDFLAGS) $(LPPFLAGS) $(LIBFLAGS) -#RPM_REQUIRES = $(shell echo "$(RPM_REQUIRES_RUN) $(RPM_REQUIRES_DEVEL)" | $(add_flavour_prefix)) -RPM_REQUIRES += $(RPM_REQUIRES_RUN) $(RPM_REQUIRES_DEVEL) - all: nothing: diff --git a/make/header.mk b/make/header.mk index 513ff7f4..94494b01 100644 --- a/make/header.mk +++ b/make/header.mk @@ -4,6 +4,7 @@ # $Id$ include $(MODDIR)/make/defs.mk +include $(MODDIR)/make/defs-cpp.mk ALL += $(BUILD_LIBDIR) $(PREREQ_DONE) $(BUILD_HDR) include $(MODDIR)/make/rules.mk all: $(ALL) diff --git a/make/include.mk b/make/include.mk index f1ef203f..72e74130 100644 --- a/make/include.mk +++ b/make/include.mk @@ -1,4 +1,5 @@ include $(MODDIR)/make/defs.mk +include $(MODDIR)/make/defs-cpp.mk include $(MODDIR)/make/dev-utils.mk # variables diff --git a/make/lib.mk b/make/lib.mk index 9ba47be8..3c8a895f 100644 --- a/make/lib.mk +++ b/make/lib.mk @@ -4,6 +4,7 @@ # $Id$ include $(MODDIR)/make/defs.mk +include $(MODDIR)/make/defs-cpp.mk include $(MODDIR)/make/rules.mk include $(MODDIR)/make/dev-utils.mk diff --git a/make/lo.mk b/make/lo.mk index 3ef65f2d..b796e68c 100644 --- a/make/lo.mk +++ b/make/lo.mk @@ -8,6 +8,7 @@ LOADABLE_OBJ_HOOK ?= LOADABLE_OBJECT_HOOK # === change this < include $(MODDIR)/make/defs.mk +include $(MODDIR)/make/defs-cpp.mk include $(MODDIR)/make/profiler-defs.mk include $(MODDIR)/make/dev-utils.mk diff --git a/make/platform.mk b/make/platform.mk index cd4a40f0..c47533f6 100644 --- a/make/platform.mk +++ b/make/platform.mk @@ -1,7 +1,7 @@ ifndef TARGET -ifneq ($(findstring mingw,$(shell pwd)),) -TARGET = mingw -endif + ifneq ($(findstring mingw,$(shell pwd)),) + TARGET := mingw + endif endif diff --git a/make/plugin-version.mk b/make/plugin-version.mk index 4c52abe9..67b2ba7e 100644 --- a/make/plugin-version.mk +++ b/make/plugin-version.mk @@ -1,5 +1,6 @@ include $(MODDIR)/make/plugin-defs.mk include $(MODDIR)/make/defs.mk +include $(MODDIR)/make/defs-cpp.mk all: $(PLUGIN_VERSION_LIB) install: diff --git a/make/plugin.mk b/make/plugin.mk index 8307435d..4211ef5f 100644 --- a/make/plugin.mk +++ b/make/plugin.mk @@ -4,6 +4,7 @@ # $Id$ include $(MODDIR)/make/defs.mk +include $(MODDIR)/make/defs-cpp.mk include $(MODDIR)/make/debugger.mk include $(MODDIR)/make/ldlibpath.mk include $(MODDIR)/make/plugin-defs.mk diff --git a/make/projects.mk b/make/projects.mk index 3791b409..bdd20cb3 100644 --- a/make/projects.mk +++ b/make/projects.mk @@ -2,10 +2,12 @@ # -- What do I know about myself? VERSION_FILE ?= $(firstword $(wildcard VERSION) $(TOPDIR)/VERSION) -ifeq ($(wildcard $(VERSION_FILE)),) - DEVELOPMENT ?= true -else - DEVELOPMENT ?= $(shell grep -q 'dev' $(VERSION_FILE) && echo true) +ifndef DEVELOPMENT + ifeq ($(wildcard $(VERSION_FILE)),) + DEVELOPMENT := true + else + DEVELOPMENT := $(shell grep -q 'dev' $(VERSION_FILE) && echo true) + endif endif # -- Conclude the build system's location: diff --git a/make/qtexe.mk b/make/qtexe.mk index 83769764..ac673a5b 100644 --- a/make/qtexe.mk +++ b/make/qtexe.mk @@ -6,6 +6,7 @@ USE_QT = true include $(MODDIR)/make/defs.mk +include $(MODDIR)/make/defs-cpp.mk include $(MODDIR)/make/qt-defs.mk include $(MODDIR)/make/exe.mk include $(MODDIR)/make/qt.mk diff --git a/make/qttools.mk b/make/qttools.mk index 862dae05..15658647 100644 --- a/make/qttools.mk +++ b/make/qttools.mk @@ -6,6 +6,7 @@ include $(MODDIR)/make/qtversion.mk include $(MODDIR)/make/tools.mk #include $(MODDIR)/make/defs.mk +#include $(MODDIR)/make/defs-cpp.mk #ALL += $(BUILD_LIBDIR) $(PREREQ_DONE) $(BUILD_HDR) $(LOCAL_EXE_SH) $(MEMBERS) #include $(MODDIR)/make/rules.mk #clean: objclean textclean localclean diff --git a/make/run.mk b/make/run.mk index ca16fe38..4aaf7723 100644 --- a/make/run.mk +++ b/make/run.mk @@ -4,6 +4,7 @@ # $Id$ include $(MODDIR)/make/defs.mk +include $(MODDIR)/make/defs-cpp.mk DIR_BASENAME = $(notdir $(shell $(PWD))) diff --git a/make/scripts.mk b/make/scripts.mk index da541083..dbc93562 100644 --- a/make/scripts.mk +++ b/make/scripts.mk @@ -4,6 +4,7 @@ # $Id$ include $(MODDIR)/make/defs.mk +include $(MODDIR)/make/defs-cpp.mk include $(MODDIR)/make/rules.mk include $(MODDIR)/make/scripts-targets.mk include $(MODDIR)/make/dev-utils.mk diff --git a/make/so.mk b/make/so.mk index 082bf28f..c7e8f701 100644 --- a/make/so.mk +++ b/make/so.mk @@ -4,6 +4,7 @@ # $Id$ include $(MODDIR)/make/defs.mk +include $(MODDIR)/make/defs-cpp.mk LDFLAGS += -shared BUILD_SHOBJS = $(addprefix $(BUILD_LIBDIR)/, $(SHOBJS)) diff --git a/make/swig.mk b/make/swig.mk index 18763b66..2db4e29f 100644 --- a/make/swig.mk +++ b/make/swig.mk @@ -1,4 +1,5 @@ include $(MODDIR)/make/defs.mk +include $(MODDIR)/make/defs-cpp.mk include $(MODDIR)/make/dev-utils.mk ifeq ($(SWIG_TARGET),php) diff --git a/make/tools.mk b/make/tools.mk index e69d6dae..6299ae61 100644 --- a/make/tools.mk +++ b/make/tools.mk @@ -4,6 +4,7 @@ # $Id$ include $(MODDIR)/make/defs.mk +include $(MODDIR)/make/defs-cpp.mk include $(MODDIR)/make/profiler-defs.mk include $(MODDIR)/make/targets-tools.mk include $(MODDIR)/make/cpp-extra-targets.mk diff --git a/make/zip-windows-files.mk b/make/zip-windows-files.mk index 1c7a94bd..64f64611 100644 --- a/make/zip-windows-files.mk +++ b/make/zip-windows-files.mk @@ -40,7 +40,7 @@ $(WINLIB): $(REQUIRED_H) make -C $(MODDIR)/$$mod clean ;\ mkdir -p $(DISTDIR)/src/$(PROJECT)/mod/$$mod ;\ echo `ls $(MODDIR)/$$mod/*.h`; \ - modfiles="`find $(MODDIR)/$$mod -name *.h -o -name *.c -o -name *.cpp -maxdepth 1`"; \ + modfiles="`find $(MODDIR)/$$mod -maxdepth 1 -name *.h -o -name *.c -o -name *.cpp`"; \ echo "++++ $$modfiles"; \ if [ -n "$$modfiles" ]; then cp $$modfiles $(DISTDIR)/src/$(PROJECT)/mod/$$mod/; fi\ done ;\ @@ -48,7 +48,7 @@ $(WINLIB): $(REQUIRED_H) mod=shared_`basename $$dir` ;\ make -C $$dir clean ;\ mkdir -p $(DISTDIR)/src/$(PROJECT)/mod/$$mod ;\ - modfiles="`find $$dir -name '*.h' -o -name '*.c' -o -name '*.cpp' -o -name '*.sh' -maxdepth 1`"; \ + modfiles="`find $$dir -maxdepth 1 -name '*.h' -o -name '*.c' -o -name '*.cpp' -o -name '*.sh'`"; \ echo "++++ $$modfiles"; \ if [ -n "$$modfiles" ]; then cp $$modfiles $(DISTDIR)/src/$(PROJECT)/mod/$$mod/; fi ;\ if [ -f "$$dir/Makefile" ]; then \