# Copyright (c) 2014-2024 Marvell International Ltd., All Rights Reserved
# Redistribution and use in source and binary forms, with or without modification, 
# are permitted provided that the following conditions are met:
#
# 1. Redistributions of source code must retain the above copyright notice, this list 
#    of conditions and the following disclaimer.
# 2. 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.
#    
# 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 HOLDER 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.
#
# Sample makefile
#
# Compiles openSourceMtd API to individual *.o files in a
# subdirectory openSourceMtdObjs and creates a library, openSourceMtd.a, 
# and a single object file openSourceMtd.o in a subdirectory 
# openSourceMtdLib.
#
# This makefile was built under Redhat using a bash shell.
# 
#######################################################################

TARGET = openSourceMtd
LIBS = -lm
CC = gcc -std=c99 -pedantic
LD = ld
#CFLAGS = -g -Wall
CFLAGS = -DLINUX $(CFLAGS2)

CFLAGS1 = $(CC_ARCH_SPEC) $(DEBUG_TYPE)
CFLAGS2 = $(CC_OPTIM) $(CC_COMPILER) $(CC_WARNINGS_ALL)
CC_OPTIM = $(CC_OPTIM_TARGET)
CC_OPTIM_DRIVER	= -O
CC_OPTIM_TARGET	= -O2
#CC_COMPILER	=  -ansi
#CC_COMPILER	=  -g
#CC_OPTIM_TARGET= -O2 -funroll-loops -fno-for-scope -fno-builtin
CC_WARNINGS_ALL	= -Wall

LDFLAGS = -nostdlib -r -X -N
ARFLAGS = crus

OBJDIR = openSourceMtdObjs
LIB_DIR= openSourceMtdLib

.PHONY: default all clean

default: $(TARGET)
all: default

OBJECTS = $(patsubst %.c, $(OBJDIR)/%.o, $(wildcard *.c))
HEADERS = $(wildcard *.h)

$(OBJDIR)/%.o: %.c $(HEADERS)
	@if ! [ -a $(OBJDIR) ]; then mkdir $(OBJDIR); fi
	$(CC) $(CFLAGS) -c $< -o $(OBJDIR)/$(notdir $@)
	
.PRECIOUS: $(TARGET) $(OBJECTS)

$(TARGET): $(OBJECTS)
	@if ! [ -a $(LIB_DIR) ]; then mkdir $(LIB_DIR); fi
	$(LD) $(LDFLAGS) -Map $(LIB_DIR)/$(TARGET).map -o $(LIB_DIR)/$(TARGET).o $(OBJECTS)
	$(AR) crv $(LIB_DIR)/$(TARGET).a $(OBJECTS) 
	
.PHONY : clean	
clean:
	-rm -f $(OBJDIR)/*.o
	-rm -f $(TARGET)
