
include Make-config



MLX_LIBARCHIVES = 3d/glint/libglint3d.a \
		  agent/libagent.a \
		  kernel/mlxcli.o \
		  x/unshared/libglint.a \
		  x/unshared/libxfake.a



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

MLX_LIBBUILD = mlxlib-so
# MLX_LIBBUILD = mlxlib-a

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



all: mlx $(MLX_LIBBUILD)

init:
	if [ -f 3d/glint/glint_acl.c ]; then \
		touch 3d/glint/$(DEPFILE); fi
	touch agent/$(DEPFILE)
	touch kernel/$(DEPFILE)

clean:
	if [ -f 3d/glint/glint_acl.c ]; then \
		$(MAKE) -C 3d/glint $(MFLAGS) $@; fi
	$(MAKE) -C include/ACL $(MFLAGS) $@
	$(MAKE) -C agent $(MFLAGS) $@
	$(MAKE) -C kernel $(MFLAGS) $@

clean-all: clean
	if [ -f 3d/glint/glint_acl.c ]; then \
		$(RM) 3d/glint/$(DEPFILE); fi
	$(RM) agent/$(DEPFILE)
	$(RM) kernel/$(DEPFILE)
	$(RM) -r lib

inc:
	if [ -f 3d/glint/glint_acl.c ]; then \
		$(MAKE) -C 3d/glint $(MFLAGS) $@; fi
	$(MAKE) -C include/ACL $(MFLAGS) $@

dep: init inc
	if [ -f 3d/glint/glint_acl.c ]; then \
		$(MAKE) -C 3d/glint $(MFLAGS) $@; fi
	$(MAKE) -C agent $(MFLAGS) $@
	$(MAKE) -C kernel $(MFLAGS) $@
	

mlx:
	if [ -f 3d/glint/glint_acl.c ]; then \
		$(MAKE) -C 3d/glint $(MFLAGS); fi
	$(MAKE) -C include/ACL $(MFLAGS)
	$(MAKE) -C agent $(MFLAGS)
	$(MAKE) -C kernel $(MFLAGS)

mlx-all: dep clean mlx $(MLX_LIBBUILD)



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)

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)
	if [ ! -d lib ]; then mkdir lib; fi
	$(RM) lib/$(MLX_LIBSONAME).$(MLX_LIBVERSION)
	$(RM) lib/$(MLX_LIBSONAME).$(MLX_LIBMAJOR)
	$(RM) lib/$(MLX_LIBSONAME)
	$(LD) --whole-archive -shared  -o lib/$(MLX_LIBSONAME).$(MLX_LIBVERSION) -soname $(MLX_LIBSONAME).$(MLX_LIBMAJOR) $(MLX_LIBARCHIVES)

	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).$(MLX_LIBVERSION)

lib/$(MLX_LIBANAME).$(MLX_LIBVERSION): $(MLX_LIBARCHIVES)
	if [ ! -d lib ]; then mkdir lib; fi
	$(AR) ruv lib/$(MLX_LIBANAME).$(MLX_LIBVERSION) $(MLX_LIBARCHIVES)
	$(RANLIB) lib/$(MLX_LIBANAME).$(MLX_LIBVERSION)



