ROOTPATH := ../../
GEN:=$(ROOTPATH)/gen/host/libnix/


ifeq ($(shell uname), MorphOS)
JOBS=
CROSS=
HOSTGCC=ppc-morphos-gcc-9
else
NPROC = $(shell echo $$(($(shell nproc) + 1)))
JOBS=-j$(NPROC)
CROSS=-DCMAKE_CROSSCOMPILING=ON
HOSTGCC=gcc
endif

all: $(GEN)lib/libsmb2.a

$(GEN)lib/libsmb2.a: buildsmb
	cp build/lib/libsmb2.a $(GEN)lib
	cp -a libsmb2/include/smb2 $(GEN)include

githubupdate:
	make clean
	git clone git@github.com:sahlberg/libsmb2.git
	(cd libsmb2 && rm -rf .git*)
	rm libsmb2.tar.xz
	tar cJvf libsmb2.tar.xz libsmb2
	make clean all
	cvs commit -m "Update from github" libsmb2.tar.xz

install:

install-iso:

source:

sdk:

sdk-source:

buildsmb: build/.cmake
	(cd build && make $(JOBS))

EXAMPLES := smb2-share-enum smb2-share-info smb2-put-sync smb2-put-async smb2-ls-sync smb2-lsa-lookupsids smb2-lseek-sync smb2-cat-sync smb2-stat-sync smb2-statvfs-sync smb2-truncate-sync smb2-raw-stat-async smb2-raw-fsstat-async smb2-raw-getsd-async

examples: buildsmb
	for i in $(EXAMPLES); do \
          echo Building $$i...; \
	  (cd build && ppc-morphos-gcc-9 -o $$i ../libsmb2/examples/$$i.c -noixemul -D_U_="__attribute__((unused))" -L./lib -lsmb2 -I../libsmb2/include/smb2 -I../libsmb2/include ) \
	done

example: buildsmb
	(cd build && ppc-morphos-gcc-9 -o smb2-share-enum ../libsmb2/examples/smb2-share-enum.c -noixemul -L./lib -lsmb2 -I../libsmb2/include/smb2 -I../libsmb2/include -Wl,-Map=smb2-share-enum.map -lsyscall)

build/.unpack: libsmb2.patch server.patch libsmb2.tar.xz
	rm -rf build libsmb2
	mkdir -p build
	tar xf libsmb2.tar.xz
	(cd libsmb2 && patch -p1 <../libsmb2.patch)
	(cd libsmb2 && patch -p1 <../server.patch)
	touch $@

build/.cmake: morphos.cmake build/.unpack
	(cd build && cmake $(CROSS) -DCMAKE_BUILD_TYPE=RelWithDebugInfo -DCMAKE_TOOLCHAIN_FILE=$(realpath morphos.cmake) ../libsmb2 \
	-DOPENSSL_INCLUDE_DIR=$(abspath $(GEN)include) )
	touch $@

clean:
	rm -rf build libsmb2 morphos.cmake

morphos.cmake: morphos.cmake.in
	$(HOSTGCC) -xc -E -P -C -o$@ -nostdinc $@.in -D_IN_ROOTPATH=$(ROOTPATH)

