SCXcore/build/Makefile.components

412 строки
20 KiB
Makefile

# -*- mode: Makefile; -*-
#--------------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
#--------------------------------------------------------------------------------
# 2007-08-23
#--------------------------------------------------------------------------------
#================================================================================
# Static Libraries
#================================================================================
include $(SCX_BRD)/build/Makefile.sslconfig
include $(SCX_BRD)/build/Makefile.providers
#--------------------------------------------------------------------------------
# Log policy
STATIC_LOGPOLICYLIB_SRCFILES = \
$(SCX_SRC_ROOT)/providers/support/logpolicy.cpp
STATIC_LOGPOLICYLIB_OBJFILES = $(call src_to_obj,$(STATIC_LOGPOLICYLIB_SRCFILES))
$(INTERMEDIATE_DIR)/liblogpolicy.$(PF_STAT_LIB_FILE_SUFFIX) : $(STATIC_LOGPOLICYLIB_OBJFILES)
$(LINK_STATLIB) $(LINK_STATLIB_OUTFLAG) $^
#--------------------------------------------------------------------------------
# ProductDependencies static library
STATIC_PRODUCTDEPENDENCIES_SRCFILES = \
$(SCX_SRC_ROOT)/providers/support/productdependencies.cpp
STATIC_PRODUCTDEPENDENCIES_OBJFILES = $(call src_to_obj,$(STATIC_PRODUCTDEPENDENCIES_SRCFILES))
STATIC_PRODUCTDEPENDENCIES_DEPFILES = \
$(INTERMEDIATE_DIR)/libProductDependencies.$(PF_STAT_LIB_FILE_SUFFIX)
$(INTERMEDIATE_DIR)/libProductDependencies.$(PF_STAT_LIB_FILE_SUFFIX) : $(STATIC_PRODUCTDEPENDENCIES_OBJFILES)
$(LINK_STATLIB) $(LINK_STATLIB_OUTFLAG) $^
#================================================================================
# Dynamic libraries
#================================================================================
#--------------------------------------------------------------------------------
# The Core Provider Module library
# The static libraries prerequisite list, expands to e.g. libXYZ.a
SCXPAL_STATICLIB_DEPS = \
palsystem \
scxassertabort \
Util \
scxcore
COREPROVIDERMODULE_STATICLIB_DEPS = \
omprovider
# Foreach XYZ in the list above, reference $(SCXPAL_TARGET_DIR)/libXYZ.a
STATIC_SCXPAL_DEPFILES = $(addprefix $(SCXPAL_TARGET_DIR)/lib, $(addsuffix .$(PF_STAT_LIB_FILE_SUFFIX), $(SCXPAL_STATICLIB_DEPS)))
SCXPAL_STATICLIB_DEPFILES_NODUPS = \
$(STATIC_SCXPAL_DEPFILES) \
$(STATIC_PRODUCTDEPENDENCIES_DEPFILES)
# Note the circular dependency: We need the PAL, ProductDependencies, and PAL
#
# The issue is that PAL references things in ProductDeps (for logging project
# specific data), which needs PAL support. So to deal with linkage, we need to
# first pull PAL (to call for required logging methods)) + ProjectDeps + PAL
# (one more time) to get things that ProjectDeps needed from PAL.
SCXPAL_STATICLIB_DEPFILES = $(SCXPAL_STATICLIB_DEPFILES_NODUPS) $(STATIC_SCXPAL_DEPFILES)
# Foreach XYZ in the list above, build $(INTERMEDIATE_DIR)/libXYZ.a
COREPROVIDERMODULE_STATICLIB_DEPFILES = $(addprefix $(INTERMEDIATE_DIR)/lib, $(addsuffix .$(PF_STAT_LIB_FILE_SUFFIX), $(COREPROVIDERMODULE_STATICLIB_DEPS)))
# Foreach XYZ in the list above, build -lXYZ
SCXPAL_LINK_STATICLIBS = $(addprefix -l, $(SCXPAL_STATICLIB_DEPS)) \
-lProductDependencies \
-llogpolicy
COREPROVIDERMODULE_LINK_STATICLIBS = $(addprefix -l, $(COREPROVIDERMODULE_STATICLIB_DEPS))
OMI_FORCED_TARGETS=$(STATIC_PROVIDERLIB_OBJFILES)
OMI_DYNAMIC_LIBS=-lmicxx
$(INTERMEDIATE_DIR)/libSCXCoreProviderModule.$(PF_DYN_LIB_FILE_SUFFIX) : $(COREPROVIDERMODULE_STATICLIB_DEPFILES) $(SCXPAL_STATICLIB_DEPFILES) $(INTERMEDIATE_DIR)/liblogpolicy.$(PF_STAT_LIB_FILE_SUFFIX)
-$(MKPATH) $(INTERMEDIATE_DIR)
$(PROFILING) $(LINK_DYNLIB) $(COREPROVIDERMODULE_EXTRA_LINKFLAGS) $(LINK_OUTFLAG) $(OMI_FORCED_TARGETS) -L$(SCXOMI_LIBS) $(COREPROVIDERMODULE_LINK_STATICLIBS) $(OMI_DYNAMIC_LIBS) $(SCXPAL_LINK_STATICLIBS) $(LDFLAGS_COREPROVIDERMODULE) $(CXX_CGEN_FLAGS) $(SCXPAL_SRC_ROOT)/scxcorelib/pal/noop.cpp
#--------------------------------------------------------------------------------
# The Test Provider Module library
# The static libraries prerequisite list, expands to e.g. libXYZ.a
TESTPROVIDERMODULE_STATICLIB_DEPS = \
testprovider \
providersupport \
logpolicy \
# Foreach XYZ in the list above, build $(INTERMEDIATE_DIR)/libXYZ.a
TESTPROVIDERMODULE_STATICLIB_DEPFILES = $(addprefix $(INTERMEDIATE_DIR)/lib, $(addsuffix .$(PF_STAT_LIB_FILE_SUFFIX), $(TESTPROVIDERMODULE_STATICLIB_DEPS)))
# Foreach XYZ in the list above, build -lXYZ
TESTPROVIDERMODULE_LINK_STATICLIBS = $(addprefix -l, $(TESTPROVIDERMODULE_STATICLIB_DEPS))
# Get the flags used for retaining exposed symbols
TESTPROVIDERMODULE_SYMBOLS_LINKFLAGS = $(call get_ld_flags_for_retaining_symbols,$(TESTPROVIDERMODULE_EXPOSED_SYMS))
$(INTERMEDIATE_DIR)/libSCXTestProviderModule.$(PF_DYN_LIB_FILE_SUFFIX) : $(TESTPROVIDERMODULE_STATICLIB_DEPFILES) $(INTERMEDIATE_DIR)/testprovider.map $(INTERMEDIATE_DIR)/testprovider.exp
-$(MKPATH) $(INTERMEDIATE_DIR)
$(PROFILING) $(LINK_DYNLIB) $(TESTPROVIDERMODULE_EXTRA_LINKFLAGS) $(LINK_OUTFLAG) $(TESTPROVIDERMODULE_SYMBOLS_LINKFLAGS) $(TESTPROVIDERMODULE_LINK_STATICLIBS) $(SCXPAL_LINK_STATICLIBS) $(LDFLAGS_TESTPROVIDERMODULE) $(PF_TESTPROVIDERLIB_EXTRA_LIBS)
$(INTERMEDIATE_DIR)/testprovider.map:
@echo "{ global: " > $@
@echo "$(addsuffix ;, $(TESTPROVIDERMODULE_EXPOSED_SYMS))" >> $@
@echo "local: *; };" >> $@
$(INTERMEDIATE_DIR)/testprovider.exp:
$(foreach SYM,$(TESTPROVIDERMODULE_EXPOSED_SYMS),$(shell echo $(EXPOSED_SYMS_PREFIX)$(SYM) >> $@))
#================================================================================
# Administration Tool
#================================================================================
SCXADMIN_DIR=$(SCX_SRC_ROOT)/shared/tools/scx_admin
# Static lib files for admin tool
STATIC_SCXADMIN_SRCFILES = \
$(SCXADMIN_DIR)/servicecontrol.cpp \
$(SCXADMIN_DIR)/cimconfigurator.cpp \
$(SCXADMIN_DIR)/logconfigurator.cpp \
$(SCXADMIN_DIR)/cmdparser.cpp \
$(SCXADMIN_DIR)/runasadminprovider.cpp
# We need to include include this module WITHOUT pulling in the provider library.
# On AIX, this causes OMI dependencies to be dragged in. We want better separation.
STATIC_SCXADMIN_SRCFILES += \
$(PROVIDER_SUPPORT_DIR)/scxrunasconfigurator.cpp
$(INTERMEDIATE_DIR)/source/code/shared/tools/scx_admin/%.d: INCLUDES += -I$(PROVIDER_SUPPORT_DIR)
$(INTERMEDIATE_DIR)/source/code/shared/tools/scx_admin/%.$(PF_OBJ_FILE_SUFFIX): INCLUDES += -I$(PROVIDER_SUPPORT_DIR)
STATIC_SCXADMIN_OBJFILES = $(call src_to_obj,$(STATIC_SCXADMIN_SRCFILES))
$(INTERMEDIATE_DIR)/libscxadmin.$(PF_STAT_LIB_FILE_SUFFIX) : $(STATIC_SCXADMIN_OBJFILES)
$(LINK_STATLIB) $(LINK_STATLIB_OUTFLAG) $^
# The main program
SCXADMIN_SRCFILES=\
$(SCXADMIN_DIR)/scx_admin.cpp
SCXADMIN_OBJFILES = $(call src_to_obj,$(SCXADMIN_SRCFILES))
SCXADMIN_DEPFILES=$(SCXADMIN_OBJFILES:.$(PF_OBJ_FILE_SUFFIX)=.d) $(STATIC_SCXADMIN_OBJFILES:.$(PF_OBJ_FILE_SUFFIX)=.d)
# Static dependencies on POSIX platforms
SCXADMIN_STATICLIB_DEPS = \
scxadmin
# omprovider \
# providersupport \
# metaprovider
ifneq ($(SCX_STACK_ONLY), true) # For a full agent, also include these:
#SCXADMIN_STATICLIB_DEPS += \
# runasprovider \
endif
# Foreach XYZ in the list above, build $(INTERMEDIATE_DIR)/libXYZ.a
SCXADMIN_STATICLIB_DEPFILES = $(addprefix $(INTERMEDIATE_DIR)/lib, $(addsuffix .$(PF_STAT_LIB_FILE_SUFFIX), $(SCXADMIN_STATICLIB_DEPS)))
$(INTERMEDIATE_DIR)/scxadmin$(PF_EXE_FILE_SUFFIX): \
$(SCXADMIN_OBJFILES) $(INTERMEDIATE_DIR)/libscxadmin.$(PF_STAT_LIB_FILE_SUFFIX) $(SCXADMIN_DEPFILES) $(SCXADMIN_STATICLIB_DEPFILES)
-$(MKPATH) $(INTERMEDIATE_DIR)/tools
$(PROFILING) $(LINK) $(LINK_OUTFLAG) $(SCXADMIN_OBJFILES) $(SCXADMIN_STATICLIB_DEPFILES) $(SCXPAL_STATICLIB_DEPFILES) $(LDFLAGS_SCX_ADMIN_TOOL) $(LDFLAGS_EXECUTABLE)
#================================================================================
# Logfile Reader Command Line Program
#================================================================================
LOGFILEREADER_DIR=$(SCX_SRC_ROOT)/providers/support
# Static lib files for scxlogfilereader command line program
STATIC_LOGFILEREADER_SRCFILES = \
$(LOGFILEREADER_DIR)/logfileutils.cpp \
$(LOGFILEREADER_DIR)/logpolicy.cpp
STATIC_LOGFILEREADER_OBJFILES = $(call src_to_obj,$(STATIC_LOGFILEREADER_SRCFILES))
$(INTERMEDIATE_DIR)/libscxlogfilereader.$(PF_STAT_LIB_FILE_SUFFIX) : $(STATIC_LOGFILEREADER_OBJFILES)
$(LINK_STATLIB) $(LINK_STATLIB_OUTFLAG) $^
# The main program
LOGFILEREADER_SRCFILES=\
$(LOGFILEREADER_DIR)/logfilereader.cpp
LOGFILEREADER_OBJFILES = $(call src_to_obj,$(LOGFILEREADER_SRCFILES))
LOGFILEREADER_DEPFILES=$(LOGFILEREADER_OBJFILES:.$(PF_OBJ_FILE_SUFFIX)=.d) $(STATIC_LOGFILEREADER_OBJFILES:.$(PF_OBJ_FILE_SUFFIX)=.d)
# Static dependencies on POSIX platforms
LOGFILEREADER_STATICLIB_DEPS = \
scxlogfilereader
# Foreach XYZ in the list above, build $(INTERMEDIATE_DIR)/libXYZ.a
LOGFILEREADER_STATICLIB_DEPFILES = $(addprefix $(INTERMEDIATE_DIR)/lib, $(addsuffix .$(PF_STAT_LIB_FILE_SUFFIX), $(LOGFILEREADER_STATICLIB_DEPS)))
$(INTERMEDIATE_DIR)/scxlogfilereader$(PF_EXE_FILE_SUFFIX): \
$(LOGFILEREADER_OBJFILES) $(INTERMEDIATE_DIR)/libscxlogfilereader.$(PF_STAT_LIB_FILE_SUFFIX) $(LOGFILEREADER_DEPFILES) $(LOGFILEREADER_STATICLIB_DEPFILES) $(SCXPAL_STATICLIB_DEPFILES)
-$(MKPATH) $(INTERMEDIATE_DIR)/tools
$(PROFILING) $(LINK) $(LINK_OUTFLAG) $(LOGFILEREADER_OBJFILES) $(LOGFILEREADER_STATICLIB_DEPFILES) $(SCXPAL_STATICLIB_DEPFILES) $(LDFLAGS_SCX_ADMIN_TOOL) $(LDFLAGS_EXECUTABLE)
#================================================================================
# Regular Expression Test Tool
#================================================================================
REGEX_TEST_DIR=$(SCX_SRC_ROOT)/shared/tools/regex_test
REGEX_TEST_SRCFILES=\
$(REGEX_TEST_DIR)/regex_test.cpp
REGEX_TEST_OBJFILES = $(call src_to_obj,$(REGEX_TEST_SRCFILES))
REGEX_TEST_DEPFILES=$(REGEX_TEST_OBJFILES:.$(PF_OBJ_FILE_SUFFIX)=.d)
$(INTERMEDIATE_DIR)/regex_test$(PF_EXE_FILE_SUFFIX): \
$(REGEX_TEST_OBJFILES) $(REGEX_TEST_DEPFILES) $(REGEX_TEST_STATICLIB_DEPFILES)
-$(MKPATH) $(INTERMEDIATE_DIR)/tools
$(PROFILING) $(LINK) $(LINK_OUTFLAG) $(REGEX_TEST_OBJFILES) $(SCXPAL_STATICLIB_DEPFILES) $(LDFLAGS_TESTRUNNER) $(LDFLAGS_EXECUTABLE)
#================================================================================
# OMI Pre-exec Directory Creation Tool
#================================================================================
OMI_PREEXEC_DIR=$(SCX_SRC_ROOT)/shared/tools/omi_preexec
PAL_STRERROR_LOC=$(SCXPAL_DIR)/source/code/scxcorelib/util
# Note that strerror.cpp lives in the PAL, but omi_preexec doesn't link against
# the PAL. To resolve, create a link to the real file and built it ourselves.
$(OMI_PREEXEC_DIR)/strerror.cpp :
# We need to recreate the symlink if the link is older than what it points to.
# Touch will not work, and ln -fs does not work on Sun5.9
rm -f $(OMI_PREEXEC_DIR)/strerror.cpp
ln -s $(PAL_STRERROR_LOC)/strerror.cpp $(OMI_PREEXEC_DIR)/strerror.cpp
OMI_PREEXEC_SRCFILES=\
$(OMI_PREEXEC_DIR)/omi_preexec.cpp \
$(OMI_PREEXEC_DIR)/strerror.cpp
OMI_PREEXEC_OBJFILES = $(call src_to_obj,$(OMI_PREEXEC_SRCFILES))
OMI_PREEXEC_DEPFILES=$(OMI_PREEXEC_OBJFILES:.$(PF_OBJ_FILE_SUFFIX)=.d)
$(INTERMEDIATE_DIR)/omi_preexec$(PF_EXE_FILE_SUFFIX): $(OMI_PREEXEC_OBJFILES) $(OMI_PREEXEC_DEPFILES)
-$(MKPATH) $(INTERMEDIATE_DIR)/tools
$(PROFILING) $(LINK) $(LINK_OUTFLAG) $(OMI_PREEXEC_OBJFILES) $(LDFLAGS_EXECUTABLE)
#================================================================================
# Development Convenience Targets
#================================================================================
logfilereader-tool: $(INTERMEDIATE_DIR)/scxlogfilereader$(PF_EXE_FILE_SUFFIX)
admin-tool: $(INTERMEDIATE_DIR)/scxadmin$(PF_EXE_FILE_SUFFIX)
regex-test: $(INTERMEDIATE_DIR)/regex_test$(PF_EXE_FILE_SUFFIX)
omi-preexec: $(INTERMEDIATE_DIR)/omi_preexec$(PF_EXE_FILE_SUFFIX)
ifeq ($(COMBINED_PACKAGES),1)
ifeq ($(PF_ARCH),x64)
ssl-tool: $(INTERMEDIATE_DIR)/$(OPENSSL098DIR)/scxsslconfig$(PF_EXE_FILE_SUFFIX) $(INTERMEDIATE_DIR)/$(OPENSSL100DIR)/scxsslconfig$(PF_EXE_FILE_SUFFIX) $(INTERMEDIATE_DIR)/$(OPENSSL110DIR)/scxsslconfig$(PF_EXE_FILE_SUFFIX) $(INTERMEDIATE_DIR)/$(OPENSSL300DIR)/scxsslconfig$(PF_EXE_FILE_SUFFIX)
else
ssl-tool: $(INTERMEDIATE_DIR)/$(OPENSSL098DIR)/scxsslconfig$(PF_EXE_FILE_SUFFIX) $(INTERMEDIATE_DIR)/$(OPENSSL100DIR)/scxsslconfig$(PF_EXE_FILE_SUFFIX)
endif
else
ssl-tool: $(INTERMEDIATE_DIR)/scxsslconfig$(PF_EXE_FILE_SUFFIX)
endif
# All SCX tools
scx-tools: logfilereader-tool admin-tool regex-test omi-preexec ssl-tool
coreprovider: \
$(INTERMEDIATE_DIR)/libSCXCoreProviderModule.$(PF_DYN_LIB_FILE_SUFFIX)
providers: \
$(INTERMEDIATE_DIR)/libSCXTestProviderModule.$(PF_DYN_LIB_FILE_SUFFIX) \
$(INTERMEDIATE_DIR)/libSCXCoreProviderModule.$(PF_DYN_LIB_FILE_SUFFIX)
# An alias
omi: omi_all
omi_all:
$(ECHO) "========================= Performing make omi"
$(MAKE) -C $(SCXOMI_DIR) all
# Testing tool (needs to be built on each of our platforms)
$(TARGET_DIR)/testapp :
$(ECHO) "========================= Performing make testapp"
$(MAKE) -C $(SCX_BRD)/test/util/testapp
# Used to generate compontents necessary for other projects to compile with the
# core components
devel-deps: $(COREPROVIDERMODULE_STATICLIB_DEPFILES) $(SCXPAL_TARGET_DIR)/libscxassertcppunit.$(PF_STAT_LIB_FILE_SUFFIX) $(TARGET_DIR)/testapp omi
$(ECHO) "========================= Performing building devel-deps"
-$(RMDIR) $(INTERMEDIATE_DIR)/scxcore-devel
ifeq ($(COMBINED_PACKAGES),1)
$(MKPATH) $(INTERMEDIATE_DIR)/scxcore-devel/lib/$(OPENSSL098DIR)
$(MKPATH) $(INTERMEDIATE_DIR)/scxcore-devel/lib/$(OPENSSL100DIR)
ifeq ($(PF_ARCH),x64)
$(MKPATH) $(INTERMEDIATE_DIR)/scxcore-devel/lib/$(OPENSSL110DIR)
$(MKPATH) $(INTERMEDIATE_DIR)/scxcore-devel/lib/$(OPENSSL300DIR)
endif
else
$(MKPATH) $(INTERMEDIATE_DIR)/scxcore-devel/lib
endif
$(COPYDIR) $(SCX_SHARED_INCLUDE_DIR) $(INTERMEDIATE_DIR)/scxcore-devel/shared
$(COPY) $(SCXPAL_STATICLIB_DEPFILES_NODUPS) $(INTERMEDIATE_DIR)/scxcore-devel/lib
$(COPY) $(COREPROVIDERMODULE_STATICLIB_DEPFILES) $(INTERMEDIATE_DIR)/scxcore-devel/lib
$(COPY) $(SCXPAL_TARGET_DIR)/libscxassertcppunit.$(PF_STAT_LIB_FILE_SUFFIX) $(INTERMEDIATE_DIR)/scxcore-devel/lib
$(MKPATH) $(INTERMEDIATE_DIR)/scxcore-devel/include/testutils
$(COPY) $(SCXPAL_TEST_ROOT)/include/testutils/scxunit.h $(INTERMEDIATE_DIR)/scxcore-devel/include/testutils
ifeq ($(LOCAL_OMI),1)
# Create an OMI development area for use in running utilities
# TODO - Is there an alias for mkdir? Not $(MKDIR) or $(MAKEDIR), those didn't work
$(RMDIR) -rf $(INTERMEDIATE_DIR)/omi
-mkdir -p $(INTERMEDIATE_DIR)/omi/etc/omiregister/root-scx
$(COPY) -r $(SCXOMI_DIR)/etc $(INTERMEDIATE_DIR)/omi
$(COPY) -r $(SCXOMI_DEV_ROOT)/* $(INTERMEDIATE_DIR)/omi
$(COPY) -r $(SCXOMI_DIR)/share $(INTERMEDIATE_DIR)/omi
endif
#================================================================================
# Doxygen Targets
#================================================================================
# Build the Doxygen documentation for the SCXCore lib
doxygen_corelib:
-$(RMDIR) $(DOXYGEN_OUTPUT_DIR)/scxcore_doc
$(MKPATH) $(DOXYGEN_OUTPUT_DIR)/scxcore_doc
( cat doxygen_scxcore.cfg ; \
echo "STRIP_FROM_PATH=$(SCX_SRC_ROOT)"; \
echo "OUTPUT_DIRECTORY=$(DOXYGEN_OUTPUT_DIR)/scxcore_doc"; \
echo "WARN_LOGFILE=$(INTERMEDIATE_DIR)/doxygen_build.log"; ) | doxygen -
if [ -s $(INTERMEDIATE_DIR)/doxygen_build.log ] ; then echo "$(INTERMEDIATE_DIR)/doxygen_build.log:1:Warnings in doxygenlog"; fi
doxygen_clean:
-$(RMDIR) $(DOXYGEN_OUTPUT_DIR)/scxcore_doc
#================================================================================
# Dependency generation Targets
#================================================================================
# Rule for automatically generating dependencies.
OBJFILES=$(STATIC_CORELIB_OBJFILES) \
$(STATIC_ASSERT_ABORTLIB_OBJFILES) \
$(STATIC_PROVIDERLIB_OBJFILES) \
$(STATIC_SCXADMIN_OBJFILES) \
$(SCXADMIN_OBJFILES) \
$(SCXSSLCONFIG_OBJFILES) \
$(REGEX_TEST_OBJFILES)
DEPFILES=$(OBJFILES:.$(PF_OBJ_FILE_SUFFIX)=.d)
#================================================================================
# Version information header file
#================================================================================
$(INT_INCLUDE_DIR)/buildversion.h : $(SCX_BRD)/build/Makefile.version
-$(MKPATH) $(@D)
@$(ECHO) "Creating $@"
@$(call pf_fwrite,"/*------------------------------------------------------------------------------", $@)
@$(call pf_fappend," Copyright (C) 2007 Microsoft Corp. ", $@)
@$(call pf_fappend," ", $@)
@$(call pf_fappend,"*/ ", $@)
@$(call pf_fappend,"/** ", $@)
@$(call pf_fappend," \file ", $@)
@$(call pf_fappend," ", $@)
@$(call pf_fappend," \brief Auto generated file containing build version information ", $@)
@$(call pf_fappend," ", $@)
@$(call pf_fappend," \author Automated Build System ", $@)
@$(call pf_fappend," ", $@)
@$(call pf_fappend," DO NOT EDIT THIS FILE! ", $@)
@$(call pf_fappend," DO NOT CHECK IN THIS FILE! ", $@)
@$(call pf_fappend,"*/ ", $@)
@$(call pf_fappend,"/*----------------------------------------------------------------------------*/", $@)
@$(call pf_fappend,"#ifndef BUILDVERSION_H ", $@)
@$(call pf_fappend,"#define BUILDVERSION_H ", $@)
@$(call pf_fappend," ", $@)
@$(call pf_fappend,"#include <string> ", $@)
@$(call pf_fappend," ", $@)
@$(call pf_fappend,"/** Major version number */ ", $@)
@$(call pf_fappend,"const int SCX_BUILDVERSION_MAJOR = $(SCX_BUILDVERSION_MAJOR); ", $@)
@$(call pf_fappend,"/** Minor version number */ ", $@)
@$(call pf_fappend,"const int SCX_BUILDVERSION_MINOR = $(SCX_BUILDVERSION_MINOR); ", $@)
@$(call pf_fappend,"/** Patch version number */ ", $@)
@$(call pf_fappend,"const int SCX_BUILDVERSION_PATCH = $(SCX_BUILDVERSION_PATCH); ", $@)
@$(call pf_fappend,"/** Build number */ ", $@)
@$(call pf_fappend,"const int SCX_BUILDVERSION_BUILDNR = $(SCX_BUILDVERSION_BUILDNR); ", $@)
@$(call pf_fappend,"/** Build date */ ", $@)
@$(call pf_fappend,"const std::wstring SCX_BUILDVERSION_DATE(L\"$(SCX_BUILDVERSION_DATE)\"); ", $@)
@$(call pf_fappend,"/** Build status */ ", $@)
@$(call pf_fappend,"const std::wstring SCX_BUILDVERSION_STATUS(L\"$(SCX_BUILDVERSION_STATUS)\"); ", $@)
@$(call pf_fappend," ", $@)
@$(call pf_fappend,"#endif /* BUILDVERSION_H */ ", $@)
@$(call pf_fappend,"/*----------------------------E-N-D---O-F---F-I-L-E---------------------------*/", $@)
#-------------------------------- End of File -----------------------------------