diff --git a/Extras/simdmathlibrary/Make.defs b/Extras/simdmathlibrary/Make.defs new file mode 100644 index 000000000..ef621e3eb --- /dev/null +++ b/Extras/simdmathlibrary/Make.defs @@ -0,0 +1,92 @@ +# -*- Makefile -*- +# Common definition for all make files in the libsimdmath library. +# Copyright (C) 2006, 2007 Sony Computer Entertainment Inc. +# All rights reserved. +# +# 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 the Sony Computer Entertainment Inc 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. + +# PowerPC (32 bit) +ARCH_CFLAGS_ppu = -m32 -maltivec -mabi=altivec -fPIC +ARCH_LDFLAGS_ppu = -m32 +ENABLE_STATIC_ppu = 1 +ENABLE_SHARED_ppu = 1 + +# PowerPC (64 bit) +ARCH_DIR_ppu64 = ppu +ARCH_CFLAGS_ppu64 = -m64 -maltivec -mabi=altivec -fPIC +ARCH_LDFLAGS_ppu64 = -m64 +ENABLE_STATIC_ppu64 = 1 +ENABLE_SHARED_ppu64 = 1 + +# SPU +prefix_spu = /usr/spu +CROSS_spu = spu- +ENABLE_STATIC_spu = 1 +ENABLE_SHARED_spu = 0 + +# Common +prefix = $(if $(prefix_$(ARCH)),$(prefix_$(ARCH)),/usr) +DESTDIR = + +ARCH_DIR = $(if $(ARCH_DIR_$(ARCH)),$(ARCH_DIR_$(ARCH)),$(ARCH)) + +CROSS = $(CROSS_$(ARCH)) + +AR = $(CROSS)ar +CC= $(CROSS)gcc +CXX = $(CROSS)g++ +RANLIB = $(CROSS)ranlib + +ARCH_CFLAGS = $(ARCH_CFLAGS_$(ARCH)) +ARCH_LDFLAGS = $(ARCH_LDFLAGS_$(ARCH)) + +CFLAGS = -O2 -W -Wall -std=gnu99 -I. -I$(topdir)/common $(ARCH_CFLAGS) +LDFLAGS = $(ARCH_LDFLAGS) + +ENABLE_STATIC = $(ENABLE_STATIC_$(ARCH)) +ENABLE_SHARED = $(ENABLE_SHARED_$(ARCH)) + +INSTALL = install + +TEST_CMD = + +LIB_MAJOR_VERSION = 1 +LIB_MINOR_VERSION = 0 +LIB_RELEASE = 2 +LIB_FULL_VERSION = $(LIB_MAJOR_VERSION).$(LIB_MINOR_VERSION).$(LIB_RELEASE) + +LIB_BASE = simdmath +LIB_NAME = lib$(LIB_BASE) + +STATIC_LIB = $(LIB_NAME).a +ALL_STATIC_LIBS = $(STATIC_LIB) + +SHARED_LIB = $(LIB_NAME).so +SHARED_LIB_SONAME = $(SHARED_LIB).$(LIB_MAJOR_VERSION) +SHARED_LIB_FULL = $(SHARED_LIB).$(LIB_FULL_VERSION) +ALL_SHARED_LIBS = $(SHARED_LIB) $(SHARED_LIB_FULL) $(SHARED_LIB_SONAME) + +TAR_NAME = $(LIB_BASE)-$(LIB_FULL_VERSION) +TAR_BALL = $(TAR_NAME).tar.gz diff --git a/Extras/simdmathlibrary/Make.rules b/Extras/simdmathlibrary/Make.rules new file mode 100644 index 000000000..6a9ff0a30 --- /dev/null +++ b/Extras/simdmathlibrary/Make.rules @@ -0,0 +1,82 @@ +# -*- Makefile -*- +# Common make rules for all make files in the libsimdmath library. +# Copyright (C) 2006, 2007 Sony Computer Entertainment Inc. +# All rights reserved. +# +# 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 the Sony Computer Entertainment Inc 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. + +ifeq ($(ENABLE_STATIC),1) + ALL_LIBS += $(ALL_STATIC_LIB) + INSTALL_LIBS += install-static +endif + +ifeq ($(ENABLE_SHARED),1) + ALL_LIBS += $(ALL_SHARED_LIBS) + INSTALL_LIBS += install-shared +endif + +all: $(ALL_LIBS) + +static: $(STATIC_LIB) + +shared: $(SHARED_LIB) + +$(STATIC_LIB): $(OBJS) + $(AR) cr $@ $(OBJS) + $(RANLIB) $@ + +$(SHARED_LIB_FULL): $(OBJS) + $(CC) -shared $(OBJS) -o $@ $(LDFLAGS) -Wl,-h,$(SHARED_LIB_SONAME) + +$(SHARED_LIB) $(SHARED_LIB_SONAME): $(SHARED_LIB_FULL) + ln -fs $(SHARED_LIB_FULL) $@ + +install: install-headers $(INSTALL_LIBS) + +install-headers: + $(INSTALL) -m 755 -d $(DESTDIR)$(prefix)/include + $(INSTALL) -m 755 -d $(DESTDIR)$(prefix)/include/simdmath + $(INSTALL) -m 644 simdmath/*.h $(DESTDIR)$(prefix)/include/simdmath/ + +install-static: $(ALL_STATIC_LIBS) + $(INSTALL) -m 755 -d $(DESTDIR)$(prefix)/lib + $(INSTALL) -m 644 $(STATIC_LIB) $(DESTDIR)$(prefix)/lib/$(STATIC_LIB) + +install-shared: $(ALL_SHARED_LIBS) + $(INSTALL) -m 755 $(SHARED_LIB_FULL) $(DESTDIR)$(prefix)/lib/$(SHARED_LIB_FULL) + ln -fs $(SHARED_LIB_FULL) $(DESTDIR)$(prefix)/lib/$(SHARED_LIB_SONAME) + ln -fs $(SHARED_LIB_SONAME) $(DESTDIR)$(prefix)/lib/$(SHARED_LIB) + +clean: + $(MAKE) -C tests clean + -rm -f $(OBJS) + -rm -f $(STATIC_LIB) $(SHARED_LIB) $(SHARED_LIB_SONAME) $(SHARED_LIB_FULL) + +check: $(ALL_LIBS) + $(MAKE) -C tests all + $(MAKE) -C tests check + +%.o: ../common/%.c simdmath/%.h + $(CC) $(CFLAGS) -c -o $@ $< diff --git a/Extras/simdmathlibrary/Make.test b/Extras/simdmathlibrary/Make.test new file mode 100644 index 000000000..1f1325ca8 --- /dev/null +++ b/Extras/simdmathlibrary/Make.test @@ -0,0 +1,87 @@ +# -*- Makefile -*- +# Common make rules for tests in the libsimdmath library. +# Copyright (C) 2006, 2007 Sony Computer Entertainment Inc. +# All rights reserved. +# +# 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 the Sony Computer Entertainment Inc 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. + +STATIC_TESTS = $(TESTS) +SHARED_TESTS = $(TESTS:=.shared) + +ifeq ($(ENABLE_STATIC),1) + ALL_TESTS += $(STATIC_TESTS) +endif + +ifeq ($(ENABLE_SHARED),1) + ALL_TESTS += $(SHARED_TESTS) +endif + +STATIC_LDFLAGS = -static +SHARED_LDFLAGS = -Wl,-rpath=.. + +LDFLAGS += -L../ -l$(LIB_BASE) -lm + +all: $(ALL_TESTS) + +$(STATIC_TESTS): %: %.o ../$(STATIC_LIB) $(OBJS) + $(CC) $*.o $(OBJS) $(LDFLAGS) $(STATIC_LDFLAGS) -o $@ + +$(SHARED_TESTS): %.shared: %.o ../$(SHARED_LIB) $(OBJS) + $(CC) $*.o $(OBJS) $(LDFLAGS) $(SHARED_LDFLAGS) -o $@ + +clean: + rm -f *.o + rm -f $(STATIC_TESTS) $(SHARED_TESTS) + rm -f core* + +check: $(ALL_TESTS) + for test in $(ALL_TESTS); do \ + echo "TEST $${test}"; \ + if $(TEST_CMD) ./$${test}; then \ + pass="$$pass $$test"; \ + else \ + fail="$$fail $$test"; \ + fi \ + done; \ + echo; echo "PASS:$$pass"; echo "FAIL:$$fail"; \ + test -z "$$fail" + +static_check: + $(MAKE) ALL_TESTS="$(STATIC_TESTS)" check + +shared_check: + $(MAKE) ALL_TESTS="$(SHARED_TESTS)" check + +../$(STATIC_LIB): + $(MAKE) -C .. $(STATIC_LIB) + +../$(SHARED_LIB): + $(MAKE) -C .. $(SHARED_LIB) + +%.o: %.c + $(CC) $(CFLAGS) -c -o $@ $< + +%.o: %.cc + $(CXX) $(CFLAGS) -c -o $@ $<