moving to cmake
This commit is contained in:
69
CMakeLists.txt
Normal file
69
CMakeLists.txt
Normal file
@@ -0,0 +1,69 @@
|
||||
cmake_minimum_required(VERSION 3.2)
|
||||
project(NeuralNetwork CXX)
|
||||
|
||||
OPTION(BUILD_SHARED_LIBS "Build also shared library." ON)
|
||||
OPTION(USE_SSE "IF sse should be used." ON)
|
||||
OPTION(USE_SSE2 "IF only sse2 should be used." OFF)
|
||||
OPTION(ENABLE_TESTS "enables tests" ON)
|
||||
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic -Weffc++ -Wshadow -Wstrict-aliasing -ansi -Woverloaded-virtual -Wdelete-non-virtual-dtor -Wno-unused-function")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --std=c++14")
|
||||
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -pthread")
|
||||
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native -mtune=native -O3")
|
||||
|
||||
if(USE_SSE)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.2 -DUSE_SSE")
|
||||
if(USE_SSE2)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUSE_SSE2")
|
||||
endif(USE_SSE2)
|
||||
endif(USE_SSE)
|
||||
|
||||
include_directories(./include/)
|
||||
|
||||
set (LIBRARY_SOURCES
|
||||
include/NeuralNetwork/ActivationFunction/ActivationFunction.h
|
||||
include/NeuralNetwork/ActivationFunction/Heaviside.h
|
||||
include/NeuralNetwork/ActivationFunction/HyperbolicTangent.h
|
||||
include/NeuralNetwork/ActivationFunction/Linear.h
|
||||
include/NeuralNetwork/ActivationFunction/Sigmoid.h
|
||||
include/NeuralNetwork/ActivationFunction/StreamingActivationFunction.h
|
||||
include/NeuralNetwork/BasisFunction/BasisFunction.h
|
||||
include/NeuralNetwork/BasisFunction/Linear.h
|
||||
include/NeuralNetwork/BasisFunction/Product.h
|
||||
include/NeuralNetwork/BasisFunction/Radial.h
|
||||
include/NeuralNetwork/BasisFunction/StreamingBasisFunction.h
|
||||
include/NeuralNetwork/FeedForward/Layer.h
|
||||
include/NeuralNetwork/FeedForward/Network.h
|
||||
include/NeuralNetwork/Recurrent/Network.h
|
||||
include/NeuralNetwork/Network.h
|
||||
include/NeuralNetwork/Neuron.h
|
||||
include/NeuralNetwork/Stringifiable.h
|
||||
include/NeuralNetwork/Stringifiable.h
|
||||
src/NeuralNetwork/Learning/BackPropagation.cpp include/NeuralNetwork/Learning/BackPropagation.h
|
||||
include/sse_mathfun.h
|
||||
src/NeuralNetwork/FeedForward/Layer.cpp
|
||||
src/NeuralNetwork/FeedForward/Network.cpp
|
||||
src/NeuralNetwork/Recurrent/Network.cpp
|
||||
src/NeuralNetwork/Neuron.cpp
|
||||
src/sse_mathfun.cpp
|
||||
)
|
||||
|
||||
add_library(NeuralNetwork STATIC ${LIBRARY_SOURCES})
|
||||
|
||||
IF(BUILD_SHARED_LIBS)
|
||||
add_library(NeuralNetworkShared SHARED ${LIBRARY_SOURCES})
|
||||
set_target_properties(NeuralNetworkShared PROPERTIES OUTPUT_NAME NeuralNetwork)
|
||||
ENDIF(BUILD_SHARED_LIBS)
|
||||
|
||||
IF(ENABLE_TESTS)
|
||||
add_subdirectory (tests)
|
||||
|
||||
enable_testing()
|
||||
|
||||
add_test(activation tests/backpropagation)
|
||||
add_test(backpropagation tests/backpropagation)
|
||||
add_test(basis tests/basis)
|
||||
add_test(feedforward tests/feedforward)
|
||||
add_test(recurrent tests/recurrent)
|
||||
ENDIF(ENABLE_TESTS)
|
||||
26
Makefile
26
Makefile
@@ -1,30 +1,6 @@
|
||||
include ./Makefile.const
|
||||
|
||||
.PHONY: all
|
||||
|
||||
all:|pre libs
|
||||
|
||||
pre:
|
||||
@mkdir -p lib
|
||||
|
||||
test: all
|
||||
make -C tests
|
||||
|
||||
install: all
|
||||
@mkdir -p build/lib
|
||||
@cp lib/*.so build/lib/
|
||||
|
||||
libs: | nn_build lib/NeuralNetwork.a lib/NeuralNetwork.so
|
||||
|
||||
lib/NeuralNetwork.so: ./src/NeuralNetwork.so
|
||||
cp ./src/NeuralNetwork.so ./lib/
|
||||
|
||||
lib/NeuralNetwork.a: ./src/NeuralNetwork.a
|
||||
cp ./src/NeuralNetwork.a ./lib/
|
||||
cp ./src/NeuralNetwork.nm ./lib/
|
||||
|
||||
nn_build:
|
||||
@make -C src/
|
||||
.PHONY: documentation clean
|
||||
|
||||
documentation:
|
||||
doxygen
|
||||
|
||||
@@ -4,7 +4,7 @@ CXXFLAGS+= -std=c++14
|
||||
#-fprefetch-loop-arrays
|
||||
CXXFLAGS+= -pg -fPIC
|
||||
CXXFLAGS+= -g
|
||||
CXXFLAGS+= -fPIC -pthread
|
||||
CXXFLAGS+= -fPIC -pthread y
|
||||
#CXXFLAGS+= -DUSE_SSE2
|
||||
OPTIMALIZATION = -O3 -march=native -mtune=native
|
||||
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
Artifitial Neural Network Library
|
||||
=================================
|
||||
s
|
||||
|
||||
how to build:
|
||||
mkdir build
|
||||
cmake ..
|
||||
make
|
||||
34
src/Makefile
34
src/Makefile
@@ -1,34 +0,0 @@
|
||||
include ../Makefile.const
|
||||
|
||||
OBJFILES= ./sse_mathfun.o ./NeuralNetwork/Recurrent/Network.o ./NeuralNetwork/Neuron.o ./NeuralNetwork/FeedForward/Network.o ./NeuralNetwork/FeedForward/Layer.o
|
||||
|
||||
#LayerNetwork.o\
|
||||
# Learning/Learning.o Learning/BackPropagation.o ../sse_mathfun.o
|
||||
|
||||
LINKFILES=
|
||||
|
||||
LIBNAME=NeuralNetwork
|
||||
|
||||
all: lib
|
||||
|
||||
spec:=../include/
|
||||
|
||||
|
||||
%.o : %.cpp $(patsubst ./%.o,../include/%.h,$<)
|
||||
$(CXX) $(CXXFLAGS) $(OPTIMALIZATION) -I../include -c $< -o $@
|
||||
|
||||
lib: $(LIBNAME).so $(LIBNAME).a
|
||||
|
||||
$(LIBNAME).so: $(OBJFILES)
|
||||
$(CXX) -shared $(CXXFLAGS) $(OBJFILES) $(LINKFILES) -o $(LIBNAME).so
|
||||
|
||||
$(LIBNAME).a: $(OBJFILES)
|
||||
rm -f $(LIBNAME).a # create new library
|
||||
ar rcv $(LIBNAME).a $(OBJFILES) $(LINKFILES)
|
||||
ranlib $(LIBNAME).a
|
||||
nm --demangle $(LIBNAME).a > $(LIBNAME).nm
|
||||
|
||||
clean:
|
||||
@rm -rf *.o ./*.so ./*.a ./*.nm ./*/*.o
|
||||
@rm -rf *.o ./*.so ./*.a ./*.nm ./*/*.o
|
||||
@rm -f $(OBJFILES)
|
||||
17
tests/CMakeLists.txt
Normal file
17
tests/CMakeLists.txt
Normal file
@@ -0,0 +1,17 @@
|
||||
cmake_minimum_required(VERSION 3.2)
|
||||
project(NeuralNetworkTests CXX)
|
||||
|
||||
add_executable(activation activation.cpp)
|
||||
target_link_libraries(activation NeuralNetwork)
|
||||
|
||||
add_executable(basis basis.cpp)
|
||||
target_link_libraries(basis NeuralNetwork)
|
||||
|
||||
add_executable(backpropagation backpropagation.cpp)
|
||||
target_link_libraries(backpropagation NeuralNetwork)
|
||||
|
||||
add_executable(feedforward feedforward.cpp)
|
||||
target_link_libraries(feedforward NeuralNetwork)
|
||||
|
||||
add_executable(recurrent recurrent.cpp)
|
||||
target_link_libraries(recurrent NeuralNetwork)
|
||||
@@ -1,27 +0,0 @@
|
||||
include ../Makefile.const
|
||||
|
||||
LIB_DIR = ../lib
|
||||
|
||||
ALL_TESTS=activation basis recurrent feedforward
|
||||
|
||||
#LIBS=$(LIB_DIR)/Genetics.a $(LIB_DIR)/NeuralNetwork.a
|
||||
#LIBS=-lGenetics.so -lNeuronNetwork
|
||||
|
||||
CXXFLAGS += -I$(LIB_DIR)
|
||||
|
||||
all:$(ALL_TESTS);
|
||||
|
||||
test: all
|
||||
@for i in $(ALL_TESTS); do echo -n ./$$i; ./$$i; echo ""; done
|
||||
|
||||
../src/NeuralNetwork.so: lib
|
||||
|
||||
%: %.cpp ../src/NeuralNetwork.so | lib %.cpp ../src/NeuralNetwork.so
|
||||
$(CXX) $(CXXFLAGS) -I../include -o $@ $< $ -lm ../src/NeuralNetwork.so -msse4.2 -DHAVE_VECLIB
|
||||
|
||||
lib:
|
||||
@make -C ../
|
||||
|
||||
clean:
|
||||
@for i in $(ALL_TESTS);do rm -f $$i;done;
|
||||
|
||||
Reference in New Issue
Block a user