Files
breezyslam/cpp/Makefile
2014-10-26 17:46:47 -04:00

92 lines
2.9 KiB
Makefile

# Makefile : builds libbreezyslam.so C++ library
#
# Copyright (C) Simon D. Levy 2014
#
# This code is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This code is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this code. If not, see <http:#www.gnu.org/licenses/>.
# You should also have received a copy of the Parrot Parrot AR.Drone
# Development License and Parrot AR.Drone copyright notice and disclaimer
# and If not, see
# <https:#projects.ardrone.org/attachments/277/ParrotLicense.txt>
# and
# <https:#projects.ardrone.org/attachments/278/ParrotCopyrightAndDisclaimer.txt>.
# Where you want to put the library
LIBDIR = /usr/local/lib
# Set library extension based on OS
ifeq ("$(shell uname)","Darwin")
LIBEXT = dylib
else ifeq ("$(shell uname)","Linux")
CFLAGS = -fPIC
LIBEXT = so
else
LIBEXT = dll
endif
ARCH = $(shell uname -m)
# Set SIMD compile params based on architecture
ifeq ("$(ARCH)","armv7l")
SIMD_FLAGS = -mfpu=neon
else ifeq ("$(ARCH)","i686")
SIMD_FLAGS = -msse3
else
ARCH = sisd
endif
all: libbreezyslam.$(LIBEXT)
test: breezytest
./breezytest
libbreezyslam.$(LIBEXT): algorithms.o Scan.o Map.o WheeledRobot.o \
coreslam.o coreslam_$(ARCH).o random.o ziggurat.o
g++ -O3 -shared algorithms.o Scan.o Map.o WheeledRobot.o \
coreslam.o coreslam_$(ARCH).o random.o ziggurat.o \
-o libbreezyslam.$(LIBEXT) -lm
algorithms.o: algorithms.cpp algorithms.hpp Laser.hpp Position.hpp Map.hpp Scan.hpp Velocities.hpp \
WheeledRobot.hpp ../c/coreslam.h
g++ -O3 -I../c -c -Wall $(CFLAGS) algorithms.cpp
Scan.o: Scan.cpp Scan.hpp Velocities.hpp Laser.hpp ../c/coreslam.h
g++ -O3 -I../c -c -Wall $(CFLAGS) Scan.cpp
Map.o: Map.cpp Map.hpp Position.hpp Scan.hpp ../c/coreslam.h
g++ -O3 -I../c -c -Wall $(CFLAGS) Map.cpp
WheeledRobot.o: WheeledRobot.cpp WheeledRobot.hpp
g++ -O3 -I../c -c -Wall $(CFLAGS) WheeledRobot.cpp
coreslam.o: ../c/coreslam.c ../c/coreslam.h
gcc -O3 -c -Wall $(CFLAGS) ../c/coreslam.c
coreslam_$(ARCH).o: ../c/coreslam_$(ARCH).c ../c/coreslam.h
gcc -O3 -c -Wall $(CFLAGS) $(SIMD_FLAGS) ../c/coreslam_$(ARCH).c
random.o: ../c/random.c
gcc -O3 -c -Wall $(CFLAGS) ../c/random.c
ziggurat.o: ../c/ziggurat.c
gcc -O3 -c -Wall $(CFLAGS) ../c/ziggurat.c
install: libbreezyslam.$(LIBEXT)
cp libbreezyslam.$(LIBEXT) $(LIBDIR)
doc:
doxygen
clean:
rm -rf libbreezyslam.$(LIBEXT) *.o Documentation \#* *~