CXX:=kos32-g++
CC:=kos32-gcc
LD:=kos32-ld
SDK_DIR:=/home/pt/dev/kolibri/latest/contrib/sdk
CXXFLAGS:=-c -fno-ident -O2 -std=c++14 -fomit-frame-pointer -U__WIN32__ -U_Win32 -U_WIN32 -U__MINGW32__ -UWIN32 -Wno-pointer-arith -Wall
CFLAGS:=-c -fno-ident -O2 -std=c99 -fomit-frame-pointer -U__WIN32__ -U_Win32 -U_WIN32 -U__MINGW32__ -UWIN32 -Wno-pointer-arith
INCLUDE:=-I $(SDK_DIR)/sources/newlib/libc/include -I $(SDK_DIR)/sources/libstdc++-v3/include -I /usr/local/kos32/lib/gcc/mingw32/5.4.0/include/c++/experimental -I.
LDFLAGS:=-static -S -Tapp-dynamic.lds --image-base 0
LIBPATH:=-L $(SDK_DIR)/lib -L /usr/local/kos32/lib

all: compile link make_iso

compile:
	$(CXX) $(CXXFLAGS) $(INCLUDE) -o ASBeautifier.o ASBeautifier.cpp
	$(CXX) $(CXXFLAGS) $(INCLUDE) -o ASEnhancer.o ASEnhancer.cpp
	$(CXX) $(CXXFLAGS) $(INCLUDE) -o ASFormatter.o ASFormatter.cpp
	$(CXX) $(CXXFLAGS) $(INCLUDE) -o ASLocalizer.o ASLocalizer.cpp
	$(CXX) $(CXXFLAGS) $(INCLUDE) -o ASResource.o ASResource.cpp
	$(CXX) $(CXXFLAGS) $(INCLUDE) -o astyle_main.o astyle_main.cpp
	$(CXX) $(CXXFLAGS) $(INCLUDE) -o filesystem.o filesystem.cpp

	$(CC) $(CFLAGS) $(INCLUDE) -o  opendir.o $(SDK_DIR)/sources/newlib/libc/posix/opendir.c
	$(CC) $(CFLAGS) $(INCLUDE) -o  readdir.o $(SDK_DIR)/sources/newlib/libc/posix/readdir.c
	$(CC) $(CFLAGS) $(INCLUDE) -o  closedir.o $(SDK_DIR)/sources/newlib/libc/posix/closedir.c

clean:
	rm -vf *.o app.iso astyle

link:
	$(LD) $(LDFLAGS) $(LIBPATH) \
	ASBeautifier.o \
	ASEnhancer.o \
	ASFormatter.o \
	ASLocalizer.o \
	ASResource.o \
	astyle_main.o  \
	filesystem.o \
	opendir.o \
	closedir.o \
	readdir.o -o astyle -lstdc++ -lsupc++ -lgcc -lc.dll /usr/local/kos32/sdk/lib/libstdc++.a
	kos32-strip -s astyle -o astyle
	kos32-objcopy astyle -O binary

make_iso:
	mkisofs -appid KolibriTestApp -volid KolibriTestApp -XA -sysid KOLIBRI -publisher pvoid -volset-size 1 -volset-seqno 1 -iso-level 3 -J -o app.iso astyle
