#
							 | 
						|
								# **************************************************************
							 | 
						|
								# *                Simple C++ Makefile Template                *
							 | 
						|
								# *                                                            *
							 | 
						|
								# * Author: Arash Partow (2003)                                *
							 | 
						|
								# * URL: http://www.partow.net/programming/makefile/index.html *
							 | 
						|
								# *                                                            *
							 | 
						|
								# * Copyright notice:                                          *
							 | 
						|
								# * Free use of this C++ Makefile template is permitted under  *
							 | 
						|
								# * the guidelines and in accordance with the the MIT License  *
							 | 
						|
								# * http://www.opensource.org/licenses/MIT                     *
							 | 
						|
								# *                                                            *
							 | 
						|
								# **************************************************************
							 | 
						|
								#
							 | 
						|
								#
							 | 
						|
								# Modifications of the original file are licenced under MIT Licence
							 | 
						|
								# 
							 | 
						|
								#(c) Ludovic 'Archivist' Lagouardette 2018
							 | 
						|
								#
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								CXX      := -clang++
							 | 
						|
								
							 | 
						|
								DEBUG	 := -g -O0 -DUNITTEST
							 | 
						|
								RELEASE	 := -s -O3 -fno-rtti
							 | 
						|
								
							 | 
						|
								CXXFLAGS := $(RELEASE) -Wno-unknown-warning-option -Wno-address-of-packed-member -pedantic-errors -Wall -Wextra -Werror -Wfatal-errors -std=c++2a -m64  -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -fmodules-ts
							 | 
						|
								LDFLAGS  :=  -L/usr/lib
							 | 
						|
								BUILD    := build
							 | 
						|
								OBJ_DIR  := $(BUILD)/objects
							 | 
						|
								MOD_DIR  := $(BUILD)/modules
							 | 
						|
								APP_DIR  := $(BUILD)/apps
							 | 
						|
								TARGET   := izaro-storage.cpp
							 | 
						|
								INCLUDE  := -Iinclude/ -I../CommandEr/src -I../json/single_include -I../tiny-js/
							 | 
						|
								SRC      :=                      \
							 | 
						|
								
							 | 
						|
								MODULES	 := $(wildcard modules/*.cpp)
							 | 
						|
								CMODULES := $(MODULES:%.cpp=$(MOD_DIR)/%.pcm)
							 | 
						|
								OMODULES := $(MODULES:%.cpp=$(MOD_DIR)/%.o)
							 | 
						|
								
							 | 
						|
								TJS_SRC := 
							 | 
						|
								#pool_allocator.cpp TinyJS.cpp TinyJS_Functions.cpp TinyJS_MathFunctions.cpp TinyJS_StringFunctions.cpp TinyJS_Threading.cpp
							 | 
						|
								TJS_OBJECTS := $(TJS_SRC:%.cpp=$(OBJ_DIR)/%.tjs.o)
							 | 
						|
								
							 | 
						|
								OBJECTS := $(SRC:%.cpp=$(OBJ_DIR)/%.o) ../CommandEr/build/commander.o
							 | 
						|
								TEST_OBJECTS := $(SRC:%.cpp=$(OBJ_DIR)/%.test.o)
							 | 
						|
								TARGETNAME := $(TARGET:%.cpp=%)
							 | 
						|
								
							 | 
						|
								all: build $(TARGET)
							 | 
						|
								
							 | 
						|
								$(MOD_DIR)/%.o: %.cpp
							 | 
						|
									@mkdir -p $(@D)
							 | 
						|
									$(CXX) $(CXXFLAGS) -fmodules-ts --precompile $< -o $(OMODULES:$(MOD_DIR)/%.o=$(MOD_DIR)/%.pcm)
							 | 
						|
									$(CXX) $(CXXFLAGS) -fmodules-ts -c $(OMODULES:$(MOD_DIR)/%.o=$(MOD_DIR)/%.pcm) -o $@
							 | 
						|
								
							 | 
						|
								$(TARGET): $(OBJECTS) build
							 | 
						|
									make -C ../CommandEr
							 | 
						|
									@mkdir -p $(@D)
							 | 
						|
									$(CXX) $(CXXFLAGS) -pthread $(INCLUDE) $(LDFLAGS) -o $(APP_DIR)/$(TARGETNAME) src/$(TARGET) $(OBJECTS) $(TJS_OBJECTS)
							 | 
						|
								
							 | 
						|
								.PHONY: all build clean
							 | 
						|
								
							 | 
						|
								ASTYLE_FLAGS= --style=stroustrup --align-reference=type --align-pointer=type --break-blocks \
							 | 
						|
								              --indent-namespaces --indent=tab --add-brackets 
							 | 
						|
								format:
							 | 
						|
									astyle $(ASTYLE_FLAGS) include/*
							 | 
						|
									astyle $(ASTYLE_FLAGS) src/*
							 | 
						|
								
							 | 
						|
								build:
							 | 
						|
									@mkdir -p $(APP_DIR)
							 | 
						|
									@mkdir -p $(OBJ_DIR)
							 | 
						|
								
							 | 
						|
								clean:
							 | 
						|
									rm -rf build/*
							 | 
						|
									rm -rf src/*.orig
							 | 
						|
									rm -rf include/*.orig
							 |