371 lines
8.3 KiB
Makefile
371 lines
8.3 KiB
Makefile
# libsst-math/Makefile
|
|
# Author: Charles Lena <cmlena@762studios.com>
|
|
# Created: 5/17/2012
|
|
#
|
|
# Purpose:
|
|
#
|
|
# Makefile for libsst-math
|
|
#
|
|
# License:
|
|
#
|
|
# This program is free software. It comes without any warranty, to
|
|
# the extent permitted by applicable law. You can redistribute it
|
|
# and/or modify it under the terms of the Do What The Fuck You Want
|
|
# To Public License, Version 2, as published by Sam Hocevar. See
|
|
# http://sam.zoy.org/wtfpl/COPYING for more details.
|
|
|
|
#ifeq ($(IS_GCC),1)
|
|
#CFLAGS += -mssse3 -ftree-vectorize -ftree-vectorizer-verbose=5 -Wall -std=c99
|
|
#CODFLAG=-Wa,-a,-ad
|
|
#endif
|
|
#ifeq ($(IS_ICC), 1)
|
|
#CFLAGS=-vec-report2 -restrict -xSSSE3 -Wall -std=c99
|
|
#CODFLAG=-S -fcode-asm
|
|
#endif
|
|
|
|
BINNAME := $(DIST)/libsst-math.a
|
|
ifeq ($(TARGET),debug)
|
|
BINNAME := $(subst .a,_d.a, $(BINNAME))
|
|
endif
|
|
|
|
#Required libraries
|
|
REQ_LIBS := libsst-math.a
|
|
|
|
# Generate the lib names with the full dist name.
|
|
# This is only used for dependency checking
|
|
REQ_LIBS_DIST := $(foreach lib,$(REQ_LIBS), $(DIST)/$(lib))
|
|
|
|
#Generate LDFLAGS for $REQ_LIBS: "libfoo.a" becomes "-lfoo"
|
|
REQ_LIBS_LDFLAGS := $(foreach lib,$(REQ_LIBS), $(subst lib,-l,$(lib)))
|
|
REQ_LIBS_LDFLAGS := -L$(DIST) $(foreach lib,$(REQ_LIBS_LDFLAGS), $(subst .a,,$(lib)))
|
|
|
|
DYNSRC_MAT= \
|
|
SST_Mat22f.c SST_Mat22d.c \
|
|
SST_Mat22i.c SST_Mat22u.c \
|
|
SST_Mat33f.c SST_Mat33d.c \
|
|
SST_Mat33i.c SST_Mat33u.c \
|
|
SST_Mat44f.c SST_Mat44d.c \
|
|
SST_Mat44i.c SST_Mat44u.c
|
|
|
|
DYNSRC_VEC= \
|
|
SST_Vec2f.c SST_Vec2d.c \
|
|
SST_Vec2i.c SST_Vec2u.c \
|
|
SST_Vec3f.c SST_Vec3u.c \
|
|
SST_Vec3d.c SST_Vec3i.c \
|
|
SST_Vec4f.c SST_Vec4d.c \
|
|
SST_Vec4i.c SST_Vec4u.c
|
|
DYNUNITTEST = $(addprefix ../ZTestSuite/Test-,$(DYNSRC_MAT:.c=.cpp)) $(addprefix ../ZTestSuite/Test-,$(DYNSRC_VEC:.c=.cpp))
|
|
DYNTEST : $(DYNTEST:.c=benchmark.c)
|
|
SRC=SST_Transform.c SST_Geo.c SST_VectorN.c
|
|
OBJ=$(addprefix obj/$(ARCH)/$(TARGET)/,$(subst .c,.o,$(SRC:.c=.o) $(DYNSRC_MAT:.c=.o) $(DYNSRC_VEC:.c=.o)) )
|
|
FULLOBJ=$(addprefix obj/$(ARCH)/$(TARGET)/,$(DYNTEST:.c=.o) )
|
|
CODs=$(SRC:.c=.cod)
|
|
PYFILE_MAT=./MatrixNxN.py
|
|
PYFILE_VEC=./VectorN.py
|
|
RANLIB?=ranlib
|
|
|
|
.PHONY: all clean cleanall assemblers
|
|
|
|
$(shell mkdir -p obj/$(ARCH)/$(TARGET))
|
|
|
|
$(BINNAME): $(OBJ)
|
|
$(AR) cru $@ $+
|
|
$(RANLIB) $@
|
|
|
|
code:
|
|
@rm -f $(DYNSRC_MAT) $(DYNSRC_VEC) $(DYNTEST) $(DYNUNITTEST)
|
|
@$(MAKE) -C .. math
|
|
|
|
test.bin: $(FULLOBJ) $(REQ_LIBS_DIST)
|
|
@echo LD $@
|
|
$(CC) $+ $(LDFLAGS) -o $@
|
|
|
|
###############################
|
|
# THIS IS THE MATRIX AREA #
|
|
###############################
|
|
SST_Mat22f.c:
|
|
@echo GEN $@
|
|
@$(PYFILE_MAT) 2 float > SST_Mat22f.c
|
|
|
|
SST_Mat22d.c:
|
|
@echo GEN $@
|
|
@$(PYFILE_MAT) 2 double > SST_Mat22d.c
|
|
|
|
SST_Mat22i.c:
|
|
@echo GEN $@
|
|
@$(PYFILE_MAT) 2 int > SST_Mat22i.c
|
|
|
|
SST_Mat22u.c:
|
|
@echo GEN $@
|
|
@$(PYFILE_MAT) 2 "unsigned int" > SST_Mat22u.c
|
|
|
|
SST_Mat33f.c:
|
|
@echo GEN $@
|
|
@$(PYFILE_MAT) 3 float > SST_Mat33f.c
|
|
|
|
SST_Mat33d.c:
|
|
@echo GEN $@
|
|
@$(PYFILE_MAT) 3 double > SST_Mat33d.c
|
|
|
|
SST_Mat33i.c:
|
|
@echo GEN $@
|
|
@$(PYFILE_MAT) 3 int > SST_Mat33i.c
|
|
|
|
SST_Mat33u.c:
|
|
@echo GEN $@
|
|
@$(PYFILE_MAT) 3 "unsigned int" > SST_Mat33u.c
|
|
|
|
SST_Mat44f.c:
|
|
@echo GEN $@
|
|
@$(PYFILE_MAT) 4 float > SST_Mat44f.c
|
|
|
|
SST_Mat44d.c:
|
|
@echo GEN $@
|
|
@$(PYFILE_MAT) 4 double > SST_Mat44d.c
|
|
|
|
SST_Mat44i.c:
|
|
@echo GEN $@
|
|
@$(PYFILE_MAT) 4 int > SST_Mat44i.c
|
|
|
|
SST_Mat44u.c:
|
|
@echo GEN $@
|
|
@$(PYFILE_MAT) 4 "unsigned int" > SST_Mat44u.c
|
|
|
|
###############################
|
|
# THIS IS THE VECTOR AREA #
|
|
###############################
|
|
SST_Vec2f.c:
|
|
@echo GEN $@
|
|
echo "$(PYFILE_VEC) 2 float > SST_Vec2f.c"
|
|
@$(PYFILE_VEC) 2 float > SST_Vec2f.c
|
|
|
|
SST_Vec2d.c:
|
|
@echo GEN $@
|
|
@$(PYFILE_VEC) 2 double > SST_Vec2d.c
|
|
|
|
SST_Vec2i.c:
|
|
@echo GEN $@
|
|
@$(PYFILE_VEC) 2 int > SST_Vec2i.c
|
|
|
|
SST_Vec2u.c:
|
|
@echo GEN $@
|
|
@$(PYFILE_VEC) 2 "unsigned int" > SST_Vec2u.c
|
|
|
|
SST_Vec3f.c:
|
|
@echo GEN $@
|
|
@$(PYFILE_VEC) 3 float > SST_Vec3f.c
|
|
|
|
SST_Vec3d.c:
|
|
@echo GEN $@
|
|
@$(PYFILE_VEC) 3 double > SST_Vec3d.c
|
|
|
|
SST_Vec3i.c:
|
|
@echo GEN $@
|
|
@$(PYFILE_VEC) 3 int > SST_Vec3i.c
|
|
|
|
SST_Vec3u.c:
|
|
@echo GEN $@
|
|
@$(PYFILE_VEC) 3 "unsigned int" > SST_Vec3u.c
|
|
|
|
SST_Vec4f.c:
|
|
@echo GEN $@
|
|
@$(PYFILE_VEC) 4 float > SST_Vec4f.c
|
|
|
|
SST_Vec4d.c:
|
|
@echo GEN $@
|
|
@$(PYFILE_VEC) 4 double > SST_Vec4d.c
|
|
|
|
SST_Vec4i.c:
|
|
@echo GEN $@
|
|
@$(PYFILE_VEC) 4 int > SST_Vec4i.c
|
|
|
|
SST_Vec4u.c:
|
|
@echo GEN $@
|
|
@$(PYFILE_VEC) 4 "unsigned int" > SST_Vec4u.c
|
|
|
|
##################################
|
|
# THIS IS THE VECTEST SUITE AREA #
|
|
##################################
|
|
../ZTestSuite/Test-SST_Vec2f.cpp:
|
|
@echo GEN $@
|
|
@$(PYFILE_VEC) 2 float unittest > $@
|
|
|
|
../ZTestSuite/Test-SST_Vec2d.cpp:
|
|
@echo GEN $@
|
|
@$(PYFILE_VEC) 2 double unittest > $@
|
|
|
|
../ZTestSuite/Test-SST_Vec2i.cpp:
|
|
@echo GEN $@
|
|
@$(PYFILE_VEC) 2 int unittest > $@
|
|
|
|
../ZTestSuite/Test-SST_Vec2u.cpp:
|
|
@echo GEN $@
|
|
@$(PYFILE_VEC) 2 "unsigned int" unittest > $@
|
|
|
|
../ZTestSuite/Test-SST_Vec3f.cpp:
|
|
@echo GEN $@
|
|
@$(PYFILE_VEC) 3 float unittest > $@
|
|
|
|
../ZTestSuite/Test-SST_Vec3d.cpp:
|
|
@echo GEN $@
|
|
@$(PYFILE_VEC) 3 double unittest > $@
|
|
|
|
../ZTestSuite/Test-SST_Vec3i.cpp:
|
|
@echo GEN $@
|
|
@$(PYFILE_VEC) 3 int unittest > $@
|
|
|
|
../ZTestSuite/Test-SST_Vec3u.cpp:
|
|
@echo GEN $@
|
|
@$(PYFILE_VEC) 3 "unsigned int" unittest > $@
|
|
|
|
../ZTestSuite/Test-SST_Vec4f.cpp:
|
|
@echo GEN $@
|
|
@$(PYFILE_VEC) 4 float unittest > $@
|
|
|
|
../ZTestSuite/Test-SST_Vec4d.cpp:
|
|
@echo GEN $@
|
|
@$(PYFILE_VEC) 4 double unittest > $@
|
|
|
|
../ZTestSuite/Test-SST_Vec4i.cpp:
|
|
@echo GEN $@
|
|
@$(PYFILE_VEC) 4 int unittest > $@
|
|
|
|
../ZTestSuite/Test-SST_Vec4u.cpp:
|
|
@echo GEN $@
|
|
@$(PYFILE_VEC) 4 "unsigned int" unittest > $@
|
|
|
|
###############################
|
|
# THIS IS THE TEST SUITE AREA #
|
|
###############################
|
|
../ZTestSuite/Test-SST_Mat22f.cpp:
|
|
@echo GEN $@
|
|
@$(PYFILE_MAT) 2 float unittest > $@
|
|
|
|
../ZTestSuite/Test-SST_Mat22d.cpp:
|
|
@echo GEN $@
|
|
@$(PYFILE_MAT) 2 double unittest > $@
|
|
|
|
../ZTestSuite/Test-SST_Mat22i.cpp:
|
|
@echo GEN $@
|
|
@$(PYFILE_MAT) 2 int unittest > $@
|
|
|
|
../ZTestSuite/Test-SST_Mat22u.cpp:
|
|
@echo GEN $@
|
|
@$(PYFILE_MAT) 2 "unsigned int" unittest > $@
|
|
|
|
../ZTestSuite/Test-SST_Mat33f.cpp:
|
|
@echo GEN $@
|
|
@$(PYFILE_MAT) 3 float unittest > $@
|
|
|
|
../ZTestSuite/Test-SST_Mat33d.cpp:
|
|
@echo GEN $@
|
|
@$(PYFILE_MAT) 3 double unittest > $@
|
|
|
|
../ZTestSuite/Test-SST_Mat33i.cpp:
|
|
@echo GEN $@
|
|
@$(PYFILE_MAT) 3 int unittest > $@
|
|
|
|
../ZTestSuite/Test-SST_Mat33u.cpp:
|
|
@echo GEN $@
|
|
@$(PYFILE_MAT) 3 "unsigned int" unittest > $@
|
|
|
|
../ZTestSuite/Test-SST_Mat44f.cpp:
|
|
@echo GEN $@
|
|
@$(PYFILE_MAT) 4 float unittest > $@
|
|
|
|
../ZTestSuite/Test-SST_Mat44d.cpp:
|
|
@echo GEN $@
|
|
@$(PYFILE_MAT) 4 double unittest > $@
|
|
|
|
../ZTestSuite/Test-SST_Mat44i.cpp:
|
|
@echo GEN $@
|
|
@$(PYFILE_MAT) 4 int unittest > $@
|
|
|
|
../ZTestSuite/Test-SST_Mat44u.cpp:
|
|
@echo GEN $@
|
|
@$(PYFILE_MAT) 4 "unsigned int" unittest > $@
|
|
|
|
###############################
|
|
# THIS IS THE BENCHMARK AREA #
|
|
###############################
|
|
SST_Mat22f_benchmark.c :
|
|
@echo GEN $@
|
|
@$(PYFILE_MAT) 2 float benchmark > $@
|
|
|
|
SST_Mat22d_benchmark.c :
|
|
@echo GEN $@
|
|
@$(PYFILE_MAT) 2 double benchmark > $@
|
|
|
|
SST_Mat22i_benchmark.c :
|
|
@echo GEN $@
|
|
@$(PYFILE_MAT) 2 int benchmark > $@
|
|
|
|
SST_Mat22u_benchmark.c :
|
|
@echo GEN $@
|
|
@$(PYFILE_MAT) 2 "unsigned int" benchmark > $@
|
|
|
|
SST_Mat33f_benchmark.c :
|
|
@echo GEN $@
|
|
@$(PYFILE_MAT) 3 float benchmark > $@
|
|
|
|
SST_Mat33d_benchmark.c :
|
|
@echo GEN $@
|
|
@$(PYFILE_MAT) 3 double benchmark > $@
|
|
|
|
SST_Mat33i_benchmark.c :
|
|
@echo GEN $@
|
|
@$(PYFILE_MAT) 3 int benchmark > $@
|
|
|
|
SST_Mat33u_benchmark.c :
|
|
@echo GEN $@
|
|
@$(PYFILE_MAT) 3 "unsigned int" benchmark > $@
|
|
|
|
SST_Mat44f_benchmark.c :
|
|
@echo GEN $@
|
|
@$(PYFILE_MAT) 4 float benchmark > $@
|
|
|
|
SST_Mat44d_benchmark.c :
|
|
@echo GEN $@
|
|
@$(PYFILE_MAT) 4 double benchmark > $@
|
|
|
|
SST_Mat44i_benchmark.c :
|
|
@echo GEN $@
|
|
@$(PYFILE_MAT) 4 int benchmark > $@
|
|
|
|
SST_Mat44u_benchmark.c :
|
|
@echo GEN $@
|
|
@$(PYFILE_MAT) 4 "unsigned int" benchmark > $@
|
|
|
|
|
|
# *.c files to *.o files
|
|
obj/$(ARCH)/$(TARGET)/%.o: %.c
|
|
@echo CC $@
|
|
@$(CC) $(CFLAGS) -c $*.c -o obj/$(ARCH)/$(TARGET)/$*.o
|
|
|
|
# *.cpp files to *.o files - specifically used for unit test code check
|
|
# This should be removed eventually and handled through the ... ZTestSuite?
|
|
obj/$(ARCH)/$(TARGET)/%.o: %.cpp
|
|
@echo CXX $@
|
|
@$(CXX) $(CXXFLAGS) -I../Include -I../Lib/Include -c $< -o $@
|
|
|
|
$(CODs) : $(SRC)
|
|
$(CC) $(CODFLAG) $(CFLAGS) -c $< > $@
|
|
|
|
assemblers: $(CODs)
|
|
|
|
# CLEAN
|
|
clean:
|
|
@-rm -r -f obj $(DIST)/libsst-math*.a test.bin
|
|
|
|
# CLEAN - Gets rid of dynamically generated code as well
|
|
cleanall: clean
|
|
$(RM) $(OBJ)
|
|
$(RM) $(DYNSRC_MAT)
|
|
$(RM) $(DYNSRC_VEC)
|
|
$(RM) $(DYNTEST)
|
|
$(RM) $(DYNUNITTEST)
|
|
|
|
all: $(DYNSRC) $(OBJ) $(BINNAME) $(DYNUNITTEST)
|
|
|
|
release: $(OBJ) $(BINNAME)
|