# # BSD LICENSE # # Copyright(c) 2013-2016, Wind River Systems, Inc. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in # the documentation and/or other materials provided with the # distribution. # * Neither the name of Wind River Systems nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # Note: if you change either Makefile or Makefile.sdk you need to manually # do a "make clean" and then "make". EXECS = guest_scale_helper guest_scale_agent DESTDIR ?= / SYSCONFDIR ?= $(DESTDIR)/etc UNITDIR ?= $(DESTDIR)/usr/lib/systemd/system SDK_DEPLOY_DIR ?= /opt/deploy/cgcs_sdk VERSION ?= 2.0 PATCH ?= 0 CFLAGS= -g -Wall -Wformat -Wformat-security ODIR=obj BINDIR=bin BINEXECS=$(addprefix $(BINDIR)/, $(EXECS)) GUEST_SCALE_HELPER_SRCS = guest_scale_helper.c parser.c GUEST_SCALE_HELPER_OBJ := $(patsubst %,$(ODIR)/%,$(GUEST_SCALE_HELPER_SRCS:.c=.o)) GUEST_SCALE_AGENT_SRCS= guest_scale_agent.c parser.c GUEST_SCALE_AGENT_OBJ := $(patsubst %,$(ODIR)/%,$(GUEST_SCALE_AGENT_SRCS:.c=.o)) OBJS = $(GUEST_SCALE_OBJ) $(GUEST_SCALE_AGENT_OBJ) DEPS = $(OBJS:.o=.d) sdk/sdk.d -include $(DEPS) EXPORT_SDK := wrs-guest-scale-$(MAJOR).$(MINOR).$(PATCH) # SYSROOT = $(shell for i in $(LD) ; do echo $$i; done | grep sysroot= | awk -F = '{ print $$2 }'`) SYSROOT = $(shell echo "$(LD)" | sed -n -e 's/^.*sysroot=//p' | awk '{ print $$1 }') LIBSERVERGROUP_VER = $(shell find $(SYSROOT) | grep libservergroup.so. | sed -n -e 's/^.*libservergroup\.so\.//p') print-%: @echo $* = $($*) printvars: @$(foreach V,$(sort $(.VARIABLES)), $(if $(filter-out environment% default automatic, $(origin $V)),$(warning $V=$($V) ($(value $V))))) .PHONY: printvars all: host_all host_all: $(BINEXECS) sdk/$(EXPORT_SDK).tgz # The dependency tracking for the SDK tarball is rather crude. If any # file changes they're all copied over again. This is quick, so it's # not worth getting fancy. sdk/$(EXPORT_SDK).tgz: printvars @echo "Making SDK" @mkdir -p sdk/$(EXPORT_SDK) @mkdir -p sdk/$(EXPORT_SDK)/bin @mkdir -p sdk/$(EXPORT_SDK)/obj @mkdir -p sdk/$(EXPORT_SDK)/scripts @cp scripts/* sdk/$(EXPORT_SDK)/scripts @echo "MAJOR=$(MAJOR)" > sdk/$(EXPORT_SDK)/Makefile @echo "MINOR=$(MINOR)" >> sdk/$(EXPORT_SDK)/Makefile @echo "PATCH=$(PATCH)" >> sdk/$(EXPORT_SDK)/Makefile @cat Makefile.sdk >> sdk/$(EXPORT_SDK)/Makefile @cat docs/README.txt | sed 's/1\.0\.0/$(MAJOR).$(MINOR).$(PATCH)/' | sed 's/9.9.9/${LIBSERVERGROUP_VER}/' > sdk/$(EXPORT_SDK)/README.txt @cp docs/TiS-Guest-Resource-Scaling.pdf sdk/$(EXPORT_SDK)/TiS-Guest-Resource-Scaling.pdf @cp LICENSE sdk/$(EXPORT_SDK)/LICENSE @cp $(GUEST_SCALE_AGENT_SRCS) sdk/$(EXPORT_SDK) @cp misc.h sdk/$(EXPORT_SDK) @cd sdk && tar czf $(EXPORT_SDK).tgz $(EXPORT_SDK) @echo -n "sdk/$(EXPORT_SDK).tgz: Makefile.sdk docs/README.txt docs/TiS-Guest-Resource-Scaling.pdf " > sdk/sdk.d @echo -n "scripts/init_offline_cpus scripts/offline_cpus scripts/offline-cpus.service" >> sdk/sdk.d @echo -n "scripts/app_scale_helper " >> sdk/sdk.d @echo -n "$(GUEST_SCALE_AGENT_SRCS) " >> sdk/sdk.d @echo "misc.h " >> sdk/sdk.d @echo '*' > sdk/.gitignore $(ODIR)/%.o: %.c $(CC) -c $(CFLAGS) $(CFLAGS2) -MMD -o $@ $< $(BINDIR)/guest_scale_agent: $(GUEST_SCALE_AGENT_OBJ) $(CC) -o $@ $^ $(LDFLAGS) -lguesthostmsg -ljson-c $(BINDIR)/guest_scale_helper: $(GUEST_SCALE_HELPER_OBJ) $(CC) -o $@ $^ $(LDFLAGS) -lhostguestmsg -ljson-c install: install -d 750 -d $(DESTDIR)/usr/sbin install -d 750 -d $(SYSCONFDIR)/init.d install -m 750 -d $(DESTDIR)/usr install -m 750 -d $(DESTDIR)/usr/src install -m 750 -d $(DESTDIR)/usr/src/debug install -m 750 -d $(DESTDIR)/usr/src/debug/guest-scale-agent-$(VERSION) install -d 750 -d $(DESTDIR)/usr/sbin/.debug install -m 750 scripts/app_scale_helper $(DESTDIR)/usr/sbin/app_scale_helper install -m 750 scripts/offline_cpus $(DESTDIR)/usr/sbin/offline_cpus install -m 750 bin/guest_scale_helper $(DESTDIR)/usr/sbin/guest_scale_helper install -m 750 bin/guest_scale_agent $(DESTDIR)/usr/sbin/guest_scale_agent install -m 750 scripts/init_offline_cpus $(SYSCONFDIR)/init.d/offline_cpus install -m 750 bin/guest_scale_agent $(DESTDIR)/usr/sbin/.debug/guest_scale_agent install -d $(UNITDIR) install -m 750 scripts/offline-cpus.service $(UNITDIR)/offline-cpus.service install -m 750 scripts/guest-scale-agent.service $(UNITDIR)/guest-scale-agent.service install -d $(SDK_DEPLOY_DIR) install -m 644 sdk/wrs-guest-scale-$(VERSION).$(PATCH).tgz $(SDK_DEPLOY_DIR)/wrs-guest-scale-$(VERSION).$(PATCH).tgz # Add the host clean as a dependency to the SDK stuff clean: host_clean host_clean: rm -rf sdk