$NetBSD$

# Portability

--- makefile.orig	2018-07-18 09:45:21.000000000 +0000
+++ makefile
@@ -1,10 +1,16 @@
-all: famsa famsa-gpu
+all: famsa
 
 ## USER'S OPTIONS
 STATIC_LINK = false
-NO_AVX = false
-NO_AVX2 = false
-NO_GPU = false
+# Determined at runtime, so no reason to disable unless building
+# on a system without AVX
+NO_AVX ?= true
+NO_AVX2 ?= true
+NO_GPU ?= false
+
+DESTDIR	?=
+PREFIX	?= /usr/local
+INSTALL	?= install
 
 ####################
 
@@ -21,18 +27,18 @@ ifeq ($(UNAME_S),Darwin)
 endif
 
  
-CC 	= g++
+CXX 	?= g++
 
 ifeq ($(STATIC_LINK), true) 
-	CFLAGS	= -Wall -O3 -m64 -static -Wl,--whole-archive -lpthread -Wl,--no-whole-archive -std=c++11 -I $(LIBS_DIR) -I $(LIBS_LINUX_DIR) 
-	CLINK	= -lm -static -O3 -Wl,--whole-archive -lpthread -Wl,--no-whole-archive -std=c++11 
+	CXXFLAGS	+= -Wall -static -Wl,--whole-archive -lpthread -Wl,--no-whole-archive -std=c++11 -I $(LIBS_DIR) -I $(LIBS_LINUX_DIR) 
+	CLINK	= -lm -static -Wl,--whole-archive -lpthread -Wl,--no-whole-archive -std=c++11 
 else
-	CFLAGS	= -Wall -O3 -m64 -std=c++11 -pthread -I $(LIBS_DIR) -I $(LIBS_LINUX_DIR)
-	CLINK	= -lm -O3 -std=c++11 -pthread 
+	CXXFLAGS	+= -Wall -std=c++11 -pthread -I $(LIBS_DIR) -I $(LIBS_LINUX_DIR)
+	CLINK	= -lm -std=c++11 -pthread 
 endif
  
-CFLAGS_AVX = $(CFLAGS) -mavx ${ABI_FLAG} -mpopcnt -funroll-loops
-CFLAGS_AVX2 = $(CFLAGS) -mavx2 ${ABI_FLAG} -mpopcnt -funroll-loops
+CXXFLAGS_AVX = $(CXXFLAGS) -mavx ${ABI_FLAG} -mpopcnt -funroll-loops
+CXXFLAGS_AVX2 = $(CXXFLAGS) -mavx2 ${ABI_FLAG} -mpopcnt -funroll-loops
 
 OPENCL_OBJS := 	 core_gpu/gpumsa.o \
 	opencl_utils/hardware/Buffer.o \
@@ -59,14 +65,14 @@ COMMON_OBJS := core/input_file.o \
 	opencl_utils/common/StatisticsProvider.o 
 
 core/lcsbp_classic.o : core/lcsbp_classic.cpp
-	$(CC) $(CFLAGS) -c core/lcsbp_classic.cpp -o $@
+	$(CXX) $(CXXFLAGS) -c core/lcsbp_classic.cpp -o $@
 
 ifeq ($(NO_AVX), true) 
 LCS_OBJS := core/lcsbp.o \
 	core/lcsbp_classic.o
 
 core/lcsbp.o : core/lcsbp.cpp
-	$(CC) $(CFLAGS) -DNO_AVX -c core/lcsbp.cpp -o $@
+	$(CXX) $(CXXFLAGS) -DNO_AVX -c core/lcsbp.cpp -o $@
 
 else 
 ifeq ($(NO_AVX2), true)
@@ -76,9 +82,9 @@ LCS_OBJS := core/lcsbp.o \
 	core/lcsbp_avx.o
 
 core/lcsbp.o : core/lcsbp.cpp
-	$(CC) $(CFLAGS) -DNO_AVX2 -c core/lcsbp.cpp -o $@
+	$(CXX) $(CXXFLAGS) -DNO_AVX2 -c core/lcsbp.cpp -o $@
 core/lcsbp_avx.o : core/lcsbp_avx.cpp
-	$(CC) $(CFLAGS_AVX) -c core/lcsbp_avx.cpp -o $@
+	$(CXX) $(CXXFLAGS_AVX) -c core/lcsbp_avx.cpp -o $@
 else
 LCS_OBJS := core/lcsbp.o \
 	core/lcsbp_classic.o \
@@ -86,25 +92,25 @@ LCS_OBJS := core/lcsbp.o \
 	core/lcsbp_avx2.o
 
 core/lcsbp.o : core/lcsbp.cpp
-	$(CC) $(CFLAGS) -c core/lcsbp.cpp -o $@
+	$(CXX) $(CXXFLAGS) -c core/lcsbp.cpp -o $@
 core/lcsbp_avx.o : core/lcsbp_avx.cpp
-	$(CC) $(CFLAGS_AVX) -c core/lcsbp_avx.cpp -o $@
+	$(CXX) $(CXXFLAGS_AVX) -c core/lcsbp_avx.cpp -o $@
 core/lcsbp_avx2.o : core/lcsbp_avx2.cpp
-	$(CC) $(CFLAGS_AVX2) -c core/lcsbp_avx2.cpp -o $@
+	$(CXX) $(CXXFLAGS_AVX2) -c core/lcsbp_avx2.cpp -o $@
 endif
 endif
 
 .cpp.o:
-	$(CC) $(CFLAGS) -c $< -o $@
+	$(CXX) $(CXXFLAGS) -c $< -o $@
 
 
 ifeq ($(NO_GPU),false)
 famsa-gpu: famsa_gpu/famsa_gpu.o $(COMMON_OBJS) $(LCS_OBJS) $(OPENCL_OBJS) 
-	$(CC) $(CLINK) -o $@ famsa_gpu/famsa_gpu.o $(COMMON_OBJS) $(LCS_OBJS) $(OPENCL_OBJS) $(LIBS_LINUX_DIR)/${ASM_LIB} -lOpenCL
+	$(CXX) $(CLINK) -o $@ famsa_gpu/famsa_gpu.o $(COMMON_OBJS) $(LCS_OBJS) $(OPENCL_OBJS) -lOpenCL
 endif
 
 famsa: famsa_cpu/famsa_cpu.o $(COMMON_OBJS) $(LCS_OBJS)
-	$(CC) $(CLINK) -o $@ famsa_cpu/famsa_cpu.o $(COMMON_OBJS) $(LCS_OBJS) $(LIBS_LINUX_DIR)/${ASM_LIB}
+	$(CXX) $(CLINK) -o $@ famsa_cpu/famsa_cpu.o $(COMMON_OBJS) $(LCS_OBJS)
 
 clean:
 	-rm core/*.o
@@ -115,3 +121,7 @@ clean:
 	-rm opencl_utils/common/*.o
 	-rm famsa
 	-rm famsa-gpu
+
+install:
+	$(INSTALL) -d $(DESTDIR)$(PREFIX)/bin
+	$(INSTALL) -c famsa $(DESTDIR)$(PREFIX)/bin
