Skip to content
Snippets Groups Projects
Makefile 1.01 KiB
Newer Older
  • Learn to ignore specific revisions
  • CXX ?= g++
    CC ?= gcc
    CFLAGS = -Wall -Wconversion -O3 -fPIC -fopenmp
    # CFLAGS += -DCV_OMP
    LIBS = blas/blas.a
    SHVER = 3
    OS = $(shell uname)
    #LIBS = -lblas
    
    all: train predict
    
    lib: linear.o tron.o blas/blas.a
    	if [ "$(OS)" = "Darwin" ]; then \
    		SHARED_LIB_FLAG="-dynamiclib -Wl,-install_name,liblinear.so.$(SHVER)"; \
    	else \
    		SHARED_LIB_FLAG="-shared -Wl,-soname,liblinear.so.$(SHVER)"; \
    	fi; \
    	$(CXX) -fopenmp $${SHARED_LIB_FLAG} linear.o tron.o blas/blas.a -o liblinear.so.$(SHVER)
    
    train: tron.o linear.o train.c blas/blas.a
    	$(CXX) $(CFLAGS) -o train train.c tron.o linear.o $(LIBS)
    
    predict: tron.o linear.o predict.c blas/blas.a
    	$(CXX) $(CFLAGS) -o predict predict.c tron.o linear.o $(LIBS)
    
    tron.o: tron.cpp tron.h
    	$(CXX) $(CFLAGS) -c -o tron.o tron.cpp
    
    linear.o: linear.cpp linear.h
    	$(CXX) $(CFLAGS) -c -o linear.o linear.cpp
    
    blas/blas.a: blas/*.c blas/*.h
    	make -C blas OPTFLAGS='$(CFLAGS)' CC='$(CC)';
    
    clean:
    	make -C blas clean
    	make -C matlab clean
    	rm -f *~ tron.o linear.o train predict liblinear.so.$(SHVER)