
include Make-config



MLX_LIBARCHIVES = 3d/glint/libglint3d.a \
		  3d/mga/libmga3d.a \
		  agent/libagent.a \
		  kernel/mlxcli.o

#MLX_XARCHIVES = x/unshared/libglint.a \
		 x/unshared/libxfake.a



##############################################################################
# LIBRARY TO BUILD: STATIC 'mlxlib-a'   DYNAMIC: 'mlxlib-so'
##############################################################################

MLX_LIBBUILD_SO = mlxlib-so
MLX_LIBBUILD_A = mlxlib-a

#-----------------------------------------------------------------------------

all: mlx $(MLX_LIBBUILD_SO) $(MLX_LIBBUILD_A)

init:
	touch 3d/glint/$(DEPFILE)
	touch 3d/mga/$(DEPFILE)
	touch agent/$(DEPFILE)
	touch kernel/$(DEPFILE)

clean:
	touch 3d/glint/$(DEPFILE)
	touch 3d/mga/$(DEPFILE)
	touch agent/$(DEPFILE)
	touch kernel/$(DEPFILE)
	$(MAKE) -C 3d/glint $(MFLAGS) $@
	$(MAKE) -C 3d/mga $(MFLAGS) $@
	$(MAKE) -C agent $(MFLAGS) $@
	$(MAKE) -C kernel $(MFLAGS) $@
	$(MAKE) -C rundemo $(MFLAGS) $@

clean-all: clean
	$(RM) 3d/glint/$(DEPFILE)
	$(RM) 3d/mga/$(DEPFILE)
	$(RM) agent/$(DEPFILE)
	$(RM) kernel/$(DEPFILE)
	$(RM) -r lib

inc:
	$(MAKE) -C 3d/glint $(MFLAGS) $@

dep: init inc
	$(MAKE) -C 3d/glint $(MFLAGS) $@
	$(MAKE) -C 3d/mga $(MFLAGS) $@
	$(MAKE) -C agent $(MFLAGS) $@
	$(MAKE) -C kernel $(MFLAGS) $@

mlx:
	$(MAKE) -C 3d/glint $(MFLAGS)
	$(MAKE) -C 3d/mga $(MFLAGS)
	$(MAKE) -C agent $(MFLAGS)
	$(MAKE) -C kernel $(MFLAGS)

mlx-all: clean-all dep mlx $(MLX_LIBBUILD_SO) $(MLX_LIBBUILD_A)

#-----------------------------------------------------------------------------

xinit:
	cd x; xmkmf
	$(MAKE) -C x Makefile
	$(MAKE) -C x Makefiles

xclean:
	$(MAKE) -C x clean

xclean-all:
	$(MAKE) -C x clean-all

xdep: xinit
	$(MAKE) -C x clean-all
	$(MAKE) -C x driver_links
	$(MAKE) -C x depend

xdriver:
	$(MAKE) -C x $(MFLAGS)

#-----------------------------------------------------------------------------

World: dep clean mlx xdep xdriver $(MLX_LIBBUILD_SO) $(MLX_LIBBUILD_A)

CleanWorld: init clean-all xinit xclean-all

#-----------------------------------------------------------------------------



##############################################################################
# rules for building MLX librarys
##############################################################################

### building dynamic library ###
################################

mlxlib-so: lib/$(MLX_LIBSONAME).$(MLX_LIBVERSION)

lib/$(MLX_LIBSONAME).$(MLX_LIBVERSION): $(MLX_LIBARCHIVES) $(MLX_XARCHIVES)
	if [ ! -d lib ]; then mkdir lib; fi
	$(RM) lib/$(MLX_LIBSONAME).*
	$(RM) lib/$(MLX_LIBSONAME)
	$(LD) --whole-archive -shared  -o lib/$(MLX_LIBSONAME).$(MLX_LIBVERSION) -soname $(MLX_LIBSONAME).$(MLX_LIBMAJOR) $(MLX_LIBARCHIVES) $(MLX_XARCHIVES)

	cd lib; \
	ln -s $(MLX_LIBSONAME).$(MLX_LIBVERSION) $(MLX_LIBSONAME).$(MLX_LIBMAJOR); \
	ln -s $(MLX_LIBSONAME).$(MLX_LIBMAJOR) $(MLX_LIBSONAME);



### building static library (never tested if it's ok...) ###
############################################################

mlxlib-a: lib/$(MLX_LIBANAME)

lib/$(MLX_LIBANAME): $(MLX_LIBARCHIVES) $(MLX_XARCHIVES)
	if [ ! -d lib ]; then mkdir lib; fi
	$(RM) lib/$(MLX_LIBANAME)
	$(LD) --whole-archive -i -o lib/$(MLX_LIBANAME) $(MLX_LIBARCHIVES) $(MLX_XARCHIVES)

