obj-m := ctkml.o

KBUILD_CFLAGS += -Ictk_ml

ctkml-objs := ctkml_kernel.o ctkml_sgd_optimizer.o ctkml_model.o ctkml_xor_net.o ctkml_linear_regression.o ctkml_linear_algebra.o ctkml_matrix.o ctkml_math.o ctkml_lib.o ctkml_memory_allocator.o ctkml_autodiff.o ctkml_utility.o ctkml_layers.o ctkml_linear.o ctkml_sigmoid.o ctkml_cross_entropy_loss.o ctkml_square_loss.o ctkml_binary_cross_entropy_loss.o ctkml_loss.o

CFLAGS_ctkml_kernel.o := -DKML_KERNEL
CFLAGS_REMOVE_ctkml_kernel.o += -mno-sse2
CFLAGS_REMOVE_ctkml_kernel.o += -mno-sse
CFLAGS_REMOVE_ctkml_kernel.o += -mno-mmx
CFLAGS_ctkml_sgd_optimizer.o := -DKML_KERNEL
CFLAGS_REMOVE_ctkml_sgd_optimizer.o += -mno-sse2
CFLAGS_REMOVE_ctkml_sgd_optimizer.o += -mno-sse
CFLAGS_REMOVE_ctkml_sgd_optimizer.o += -mno-mmx
CFLAGS_ctkml_model.o := -DKML_KERNEL
CFLAGS_REMOVE_ctkml_model.o += -mno-sse2
CFLAGS_REMOVE_ctkml_model.o += -mno-sse
CFLAGS_REMOVE_ctkml_model.o += -mno-mmx
CFLAGS_ctkml_xor_net.o := -DKML_KERNEL
CFLAGS_REMOVE_ctkml_xor_net.o += -mno-sse2
CFLAGS_REMOVE_ctkml_xor_net.o += -mno-sse
CFLAGS_REMOVE_ctkml_xor_net.o += -mno-mmx
CFLAGS_ctkml_linear_regression.o := -DKML_KERNEL
CFLAGS_REMOVE_ctkml_linear_regression.o += -mno-sse2
CFLAGS_REMOVE_ctkml_linear_regression.o += -mno-sse
CFLAGS_REMOVE_ctkml_linear_regression.o += -mno-mmx
CFLAGS_ctkml_linear_algebra.o := -DKML_KERNEL
CFLAGS_REMOVE_ctkml_linear_algebra.o += -mno-sse2
CFLAGS_REMOVE_ctkml_linear_algebra.o += -mno-sse
CFLAGS_REMOVE_ctkml_linear_algebra.o += -mno-mmx
CFLAGS_ctkml_matrix.o := -DKML_KERNEL
CFLAGS_REMOVE_ctkml_matrix.o += -mno-sse2
CFLAGS_REMOVE_ctkml_matrix.o += -mno-sse
CFLAGS_REMOVE_ctkml_matrix.o += -mno-mmx
CFLAGS_ctkml_math.o := -DKML_KERNEL
CFLAGS_REMOVE_ctkml_math.o += -mno-sse2
CFLAGS_REMOVE_ctkml_math.o += -mno-sse
CFLAGS_REMOVE_ctkml_math.o += -mno-mmx
CFLAGS_ctkml_lib.o := -DKML_KERNEL
CFLAGS_REMOVE_ctkml_lib.o += -mno-sse2
CFLAGS_REMOVE_ctkml_lib.o += -mno-sse
CFLAGS_REMOVE_ctkml_lib.o += -mno-mmx
CFLAGS_ctkml_memory_allocator.o := -DKML_KERNEL
CFLAGS_REMOVE_ctkml_memory_allocator.o += -mno-sse2
CFLAGS_REMOVE_ctkml_memory_allocator.o += -mno-sse
CFLAGS_REMOVE_ctkml_memory_allocator.o += -mno-mmx
CFLAGS_ctkml_autodiff.o := -DKML_KERNEL
CFLAGS_REMOVE_ctkml_autodiff.o += -mno-sse2
CFLAGS_REMOVE_ctkml_autodiff.o += -mno-sse
CFLAGS_REMOVE_ctkml_autodiff.o += -mno-mmx
CFLAGS_ctkml_utility.o := -DKML_KERNEL
CFLAGS_REMOVE_ctkml_utility.o += -mno-sse2
CFLAGS_REMOVE_ctkml_utility.o += -mno-sse
CFLAGS_REMOVE_ctkml_utility.o += -mno-mmx
CFLAGS_ctkml_layers.o := -DKML_KERNEL
CFLAGS_REMOVE_ctkml_layers.o += -mno-sse2
CFLAGS_REMOVE_ctkml_layers.o += -mno-sse
CFLAGS_REMOVE_ctkml_layers.o += -mno-mmx
CFLAGS_ctkml_linear.o := -DKML_KERNEL
CFLAGS_REMOVE_ctkml_linear.o += -mno-sse2
CFLAGS_REMOVE_ctkml_linear.o += -mno-sse
CFLAGS_REMOVE_ctkml_linear.o += -mno-mmx
CFLAGS_ctkml_sigmoid.o := -DKML_KERNEL
CFLAGS_REMOVE_ctkml_sigmoid.o += -mno-sse2
CFLAGS_REMOVE_ctkml_sigmoid.o += -mno-sse
CFLAGS_REMOVE_ctkml_sigmoid.o += -mno-mmx
CFLAGS_ctkml_cross_entropy_loss.o := -DKML_KERNEL
CFLAGS_REMOVE_ctkml_cross_entropy_loss.o += -mno-sse2
CFLAGS_REMOVE_ctkml_cross_entropy_loss.o += -mno-sse
CFLAGS_REMOVE_ctkml_cross_entropy_loss.o += -mno-mmx
CFLAGS_ctkml_square_loss.o := -DKML_KERNEL
CFLAGS_REMOVE_ctkml_square_loss.o += -mno-sse2
CFLAGS_REMOVE_ctkml_square_loss.o += -mno-sse
CFLAGS_REMOVE_ctkml_square_loss.o += -mno-mmx
CFLAGS_ctkml_binary_cross_entropy_loss.o := -DKML_KERNEL
CFLAGS_REMOVE_ctkml_binary_cross_entropy_loss.o += -mno-sse2
CFLAGS_REMOVE_ctkml_binary_cross_entropy_loss.o += -mno-sse
CFLAGS_REMOVE_ctkml_binary_cross_entropy_loss.o += -mno-mmx
CFLAGS_ctkml_loss.o := -DKML_KERNEL
CFLAGS_REMOVE_ctkml_loss.o += -mno-sse2
CFLAGS_REMOVE_ctkml_loss.o += -mno-sse
CFLAGS_REMOVE_ctkml_loss.o += -mno-mmx
CFLAGS_ctkml_io_scheduler_linear.o := -DKML_KERNEL
CFLAGS_REMOVE_ctkml_io_scheduler_linear.o += -mno-sse2
CFLAGS_REMOVE_ctkml_io_scheduler_linear.o += -mno-sse
CFLAGS_REMOVE_ctkml_io_scheduler_linear.o += -mno-mmx


all:
	make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules

clean:
	make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean

