#
# Framsticks SDK makefile
#

include frams/Makefile-SDK-files

SDK_TESTS=genoconv_test genomanipulation geno_test genooper_test genooper_test_fTest neuro_test loader_test_geno loader_test_param saver_test_geno serial_test multiline_f0_test f0_variants_test full_props shapeconvert part_shapes neuro_layout_test geometry_apices_test geometry_info_test geometry_surface_test geometry_volume_test simil_test simil_unittests

sdk_tests: $(SDK_TESTS)

CXXWARNINGS=-Wall -Wno-parentheses -Wno-overloaded-virtual -Wno-format -Werror=return-type

SDK_BUILD_CONFIG= -include frams/config/sdk_build_config.h
CXXFLAGS= -I$(CURDIR) -std=gnu++11 $(SDK_BUILD_CONFIG) $(CXXWARNINGS) -g

AR=ar
ARFLAGS=rs
FRAMSTICKS_SDK_LIB=libFramsticksSDK.a
$(FRAMSTICKS_SDK_LIB): CXXFLAGS+= -fPIC

#############################################

lib: $(FRAMSTICKS_SDK_LIB)

$(FRAMSTICKS_SDK_LIB): $(SDK_LIB_OBJS)
	$(AR) $(ARFLAGS) $(FRAMSTICKS_SDK_LIB) $(SDK_LIB_OBJS)

genomanipulation: $(GENOMANIPULATION_OBJS)
	$(CXX) $(GENOMANIPULATION_OBJS) $(LDFLAGS) -o $@

genoconv_test: $(GENOCONV_TEST_OBJS)
	$(CXX) $(GENOCONV_TEST_OBJS) $(LDFLAGS) -o $@

geno_test: $(GENO_TEST_OBJS)
	$(CXX) $(GENO_TEST_OBJS) $(LDFLAGS) -o $@

genooper_test: $(GENOOPER_TEST_OBJS)
	$(CXX) $(GENOOPER_TEST_OBJS) $(LDFLAGS) -o $@

genooper_test_fTest: $(GENOOPER_TEST_FTEST_OBJS)
	$(CXX) $(GENOOPER_TEST_FTEST_OBJS) $(LDFLAGS) -o $@

neuro_test: $(NEURO_TEST_OBJS)
	$(CXX) $(NEURO_TEST_OBJS) $(LDFLAGS) -o $@

loader_test_geno: $(LOADER_TEST_OBJS)
	$(CXX) $(LOADER_TEST_OBJS) $(LDFLAGS) -o $@

loader_test_param: $(LOADER_TEST_PARAM_OBJS)
	$(CXX) $(LOADER_TEST_PARAM_OBJS) $(LDFLAGS) -o $@

saver_test_geno: $(SAVER_TEST_OBJS)
	$(CXX) $(SAVER_TEST_OBJS) $(LDFLAGS) -o $@

serial_test: $(SERIAL_TEST_OBJS)
	$(CXX) $(SERIAL_TEST_OBJS) $(LDFLAGS) -o $@

multiline_f0_test: $(MULTILINE_F0_OBJS)
	$(CXX) $(MULTILINE_F0_OBJS) $(LDFLAGS) -o $@

f0_variants_test: $(F0_VARIANTS_OBJS)
	$(CXX) $(F0_VARIANTS_OBJS) $(LDFLAGS) -o $@

full_props: $(FULL_PROPS_OBJS)
	$(CXX) $(FULL_PROPS_OBJS) $(LDFLAGS) -o $@

shapeconvert: $(SHAPECONVERT_OBJS)
	$(CXX) $(SHAPECONVERT_OBJS) $(LDFLAGS) -o $@

part_shapes: $(PART_SHAPES_OBJS)
	$(CXX) $(PART_SHAPES_OBJS) $(LDFLAGS) -o $@

neuro_layout_test: $(NEURO_LAYOUT_TEST_OBJS)
	$(CXX) $(NEURO_LAYOUT_TEST_OBJS) $(LDFLAGS) -o $@

geometry_apices_test: $(GEOMETRY_APICES_TEST_OBJS)
	$(CXX) $(GEOMETRY_APICES_TEST_OBJS) $(LDFLAGS) -o $@

geometry_info_test: $(GEOMETRY_INFO_TEST_OBJS)
	$(CXX) $(GEOMETRY_INFO_TEST_OBJS) $(LDFLAGS) -o $@

geometry_surface_test: $(GEOMETRY_SURFACE_TEST_OBJS)
	$(CXX) $(GEOMETRY_SURFACE_TEST_OBJS) $(LDFLAGS) -o $@

geometry_volume_test: $(GEOMETRY_VOLUME_TEST_OBJS)
	$(CXX) $(GEOMETRY_VOLUME_TEST_OBJS) $(LDFLAGS) -o $@

simil_test: $(SIMIL_TEST_OBJS)
	$(CXX) $(SIMIL_TEST_OBJS) $(LDFLAGS) -o $@
	
simil_unittests: $(SIMIL_UNITTESTS_OBJS)
	$(CXX) $(SIMIL_UNITTESTS_OBJS) $(LDFLAGS) -o $@

#############################################

ALL_OBJS=$(GENOMANIPULATION_OBJS) $(GENOCONV_TEST_OBJS) $(GENO_TEST_OBJS) $(NEURO_TEST_OBJS) $(LOADER_TEST_OBJS) $(SERIAL_TEST_OBJS) $(MULTILINE_F0_OBJS) $(F0_VARIANTS_OBJS) $(FULL_PROPS_OBJS) $(PART_SHAPES_OBJS) $(NEURO_LAYOUT_TEST_OBJS) $(GENOOPER_TEST_OBJS) $(GEOMETRY_APICES_TEST_OBJS) $(GEOMETRY_INFO_TEST_OBJS) $(GEOMETRY_SURFACE_TEST_OBJS) $(GEOMETRY_VOLUME_TEST_OBJS) $(SIMIL_TEST_OBJS) $(SIMIL_UNITTESTS_OBJS)

include common/Makefile-maintain

full_clean: clean
	rm -f $(SDK_TESTS) $(FRAMSTICKS_SDK_LIB)
