| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License |
| |
| |
| # for ARM make CROSS_COMPILE=arm-linux-gnueabi ARCH=arm |
| VERSION=0.0.1 |
| CC=$(CROSS_COMPILE)-g++ |
| AR=$(CROSS_COMPILE)-ar |
| BUILD_DIR= ./build |
| TARGET_DIR=./target |
| ASSEMBLIES_DIR = ./assemblies |
| TARGET_LIB=libminifi.a |
| PROJECT=minifi |
| TARGET_EXE=$(PROJECT) |
| ifeq ($(ARCH), arm) |
| CFLAGS=-Os -fexceptions -fpermissive -Wno-write-strings -std=c++11 -fPIC -Wall -g -Wno-unused-private-field -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -Wl,--whole-archive -lpthread -Wl,--no-whole-archive -lc |
| INCLUDES=-I./inc -I./src -I./thirdparty -I./test -I./thirdparty/libxml2/include -I./thirdparty/yaml-cpp-yaml-cpp-0.5.3/include |
| LDDIRECTORY=-L./build -L./thirdparty -L./thirdparty/libxml2/.libs/ |
| LDFLAGS=-static -lminifi -lxml2 -pthread -luuid |
| else ifeq ($(ARCH), linux) |
| CFLAGS=-Os -fexceptions -fpermissive -Wno-write-strings -std=c++11 -fPIC -Wall -g |
| INCLUDES=-I./inc -I./src -I./thirdparty -I./test -I./thirdparty/libxml2/include -I./thirdparty/yaml-cpp-yaml-cpp-0.5.3/include |
| LDDIRECTORY=-L./build -L./thirdparty/uuid -L./thirdparty/libxml2/.libs/ |
| LDFLAGS=-lminifi -lxml2 -pthread -luuid |
| else |
| CFLAGS=-Os -fexceptions -fpermissive -Wno-write-strings -std=c++11 -fPIC -Wall -g -Wno-unused-private-field |
| INCLUDES=-I./inc -I./src -I./test -I./thirdparty -I/usr/include/libxml2 -I./thirdparty/yaml-cpp-yaml-cpp-0.5.3/include |
| LDDIRECTORY=-L./build -L./thirdparty/uuid -L./thirdparty/yaml-cpp-yaml-cpp-0.5.3/lib/ |
| LDFLAGS=-lminifi -lxml2 -pthread -luuid -lyaml-cpp |
| endif |
| |
| |
| UNAME_S := $(shell uname -s) |
| ifeq ($(UNAME_S),Linux) |
| LDFLAGS += -lrt |
| endif |
| ifeq ($(UNAME_S),Darwin) |
| endif |
| |
| OBJS:=$(shell /bin/ls src/*.cpp | xargs -n1 basename 2>/dev/null | awk '/\.cpp$$/{a=$$0; gsub("\\.cpp$$",".o", a); print "$(BUILD_DIR)/" a}') |
| TESTS:=Server |
| |
| all: thirdparty/yaml-cpp-yaml-cpp-0.5.3/lib/libyaml-cpp.a directory $(BUILD_DIR)/$(TARGET_LIB) minifi tests assembly-pkgs |
| |
| thirdparty/yaml-cpp-yaml-cpp-0.5.3/lib/libyaml-cpp.a: |
| make -C thirdparty/yaml-cpp-yaml-cpp-0.5.3 |
| |
| |
| .PHONY: directory |
| directory: |
| mkdir -p $(BUILD_DIR) |
| mkdir -p $(TARGET_DIR) |
| make -C thirdparty/uuid |
| ifeq ($(ARCH), arm) |
| make -C thirdparty/uuid CROSS_COMPILE=$(CROSS_COMPILE) |
| cd thirdparty/libxml2; ./configure --host=${CROSS_COMPILE} --target==${CROSSS_COMPILE} --without-python --without-zlib --enable-static --disable-shared; make; cd ../../ |
| else ifeq ($(ARCH), linux) |
| cd thirdparty/libxml2; ./configure --without-python --without-zlib --enable-static --disable-shared; make; cd ../../ |
| endif |
| |
| $(BUILD_DIR)/%.o: src/%.cpp |
| $(CC) $(CFLAGS) $(INCLUDES) -o $@ -c $< |
| |
| $(BUILD_DIR)/$(TARGET_LIB): $(OBJS) |
| $(AR) crs $@ $(OBJS) |
| |
| minifi: $(BUILD_DIR)/$(TARGET_LIB) thirdparty/yaml-cpp-yaml-cpp-0.5.3/lib/libyaml-cpp.a |
| $(CC) $(CFLAGS) $(INCLUDES) -o $(BUILD_DIR)/$(TARGET_EXE) main/MiNiFiMain.cpp $(LDDIRECTORY) $(LDFLAGS) |
| cp $(BUILD_DIR)/$(TARGET_EXE) $(TARGET_DIR)/$(TARGET_EXE) |
| |
| .PHONY: tests |
| tests: $(BUILD_DIR)/$(TARGET_LIB) thirdparty/yaml-cpp-yaml-cpp-0.5.3/lib/libyaml-cpp.a |
| $(foreach TEST_NAME, $(TESTS),\ |
| $(CC) $(CFLAGS) $(INCLUDES) -o $(BUILD_DIR)/$(TEST_NAME) test/$(TEST_NAME).cpp $(LDDIRECTORY) $(LDFLAGS)) |
| |
| $(ASSEMBLIES_DIR) : |
| mkdir -p $(ASSEMBLIES_DIR) |
| |
| .PHONY: assembly-pkgs |
| assembly-pkgs: $(ASSEMBLIES_DIR)/$(PROJECT)-$(VERSION)-bin.tar.gz $(ASSEMBLIES_DIR)/$(PROJECT)-$(VERSION)-source.tar.gz |
| |
| $(ASSEMBLIES_DIR)/$(PROJECT)-$(VERSION)-source.tar.gz : $(ASSEMBLIES_DIR) |
| mkdir -p $(ASSEMBLIES_DIR)/$(PROJECT)-$(VERSION)-source |
| cp -r LICENSE \ |
| NOTICE \ |
| README.md \ |
| inc \ |
| src \ |
| main \ |
| conf \ |
| thirdparty \ |
| Makefile \ |
| $(ASSEMBLIES_DIR)/$(PROJECT)-$(VERSION)-source |
| tar -czf $(ASSEMBLIES_DIR)/$(PROJECT)-$(VERSION)-source.tar.gz -C $(ASSEMBLIES_DIR) $(PROJECT)-$(VERSION)-source |
| |
| $(ASSEMBLIES_DIR)/$(PROJECT)-$(VERSION)-bin.tar.gz : $(ASSEMBLIES_DIR) $(TARGET_EXE) |
| tar -czf $(ASSEMBLIES_DIR)/$(PROJECT)-$(VERSION)-bin.tar.gz \ |
| LICENSE \ |
| NOTICE \ |
| README.md \ |
| conf \ |
| -C target minifi |
| |
| .PHONY: clean |
| clean: |
| rm -rf $(BUILD_DIR) |
| rm -rf $(TARGET_DIR) |
| rm -rf $(ASSEMBLIES_DIR) |
| make -C thirdparty/yaml-cpp-yaml-cpp-0.5.3 clean |
| make -C thirdparty/uuid clean |
| ifeq ($(ARCH), arm) |
| make -C thirdparty/uuid clean |
| make -C thirdparty/libxml2 distclean |
| else ifeq ($(ARCH), linux) |
| make -C thirdparty/uuid clean |
| make -C thirdparty/libxml2 distclean |
| endif |