diff --git a/Makefile b/Makefile index 487e02e..3e5c9e0 100644 --- a/Makefile +++ b/Makefile @@ -4,24 +4,35 @@ SUBDIRS = include src tools RM = rm -f LN = ln -f TAR = tar +TGZEXT = .tar.gz MKDIR = mkdir -m 0755 -p all: subdirs subdirs: - @for i in $(SUBDIRS); do (cd "$$i" && $(MAKE)) || exit; done + @for i in $(SUBDIRS); do (cd "$$i" && \ + if [ -n "$(OBJDIR)" ]; then \ + ([ -d "$(OBJDIR)$$i" ] || $(MKDIR) -- "$(OBJDIR)$$i") && \ + $(MAKE) OBJDIR="$(OBJDIR)$$i/"; \ + else $(MAKE); fi) || exit; done clean: - @for i in $(SUBDIRS); do (cd "$$i" && $(MAKE) clean) || exit; done + @for i in $(SUBDIRS); do (cd "$$i" && \ + if [ -n "$(OBJDIR)" ]; then \ + $(MAKE) OBJDIR="$(OBJDIR)$$i/" clean; \ + else $(MAKE) clean; fi) || exit; done distclean: - @for i in $(SUBDIRS); do (cd "$$i" && $(MAKE) distclean) || exit; done + @for i in $(SUBDIRS); do (cd "$$i" && \ + if [ -n "$(OBJDIR)" ]; then \ + $(MAKE) OBJDIR="$(OBJDIR)$$i/" distclean; \ + else $(MAKE) distclean; fi) || exit; done dist: $(RM) -r -- $(OBJDIR)$(PACKAGE)-$(VERSION) $(LN) -s -- "$$PWD" $(OBJDIR)$(PACKAGE)-$(VERSION) - @cd $(OBJDIR). && $(TAR) -czvf $(OBJDIR)$(PACKAGE)-$(VERSION).tar.gz -- \ + @cd $(OBJDIR). && $(TAR) -czvf $(PACKAGE)-$(VERSION)$(TGZEXT) -- \ $(PACKAGE)-$(VERSION)/include/GToolkit.h \ $(PACKAGE)-$(VERSION)/include/Makefile \ $(PACKAGE)-$(VERSION)/include/project.conf \ @@ -44,20 +55,26 @@ dist: $(RM) -- $(OBJDIR)$(PACKAGE)-$(VERSION) distcheck: dist - $(TAR) -xzvf $(OBJDIR)$(PACKAGE)-$(VERSION).tar.gz + $(TAR) -xzvf $(OBJDIR)$(PACKAGE)-$(VERSION)$(TGZEXT) $(MKDIR) -- $(PACKAGE)-$(VERSION)/objdir $(MKDIR) -- $(PACKAGE)-$(VERSION)/destdir - (cd "$(PACKAGE)-$(VERSION)" && $(MAKE) OBJDIR="$$PWD/objdir/") - (cd "$(PACKAGE)-$(VERSION)" && $(MAKE) OBJDIR="$$PWD/objdir/" DESTDIR="$$PWD/destdir" install) - (cd "$(PACKAGE)-$(VERSION)" && $(MAKE) OBJDIR="$$PWD/objdir/" DESTDIR="$$PWD/destdir" uninstall) - (cd "$(PACKAGE)-$(VERSION)" && $(MAKE) OBJDIR="$$PWD/objdir/" distclean) - (cd "$(PACKAGE)-$(VERSION)" && $(MAKE) dist) + cd "$(PACKAGE)-$(VERSION)" && $(MAKE) OBJDIR="$$PWD/objdir/" + cd "$(PACKAGE)-$(VERSION)" && $(MAKE) OBJDIR="$$PWD/objdir/" DESTDIR="$$PWD/destdir" install + cd "$(PACKAGE)-$(VERSION)" && $(MAKE) OBJDIR="$$PWD/objdir/" DESTDIR="$$PWD/destdir" uninstall + cd "$(PACKAGE)-$(VERSION)" && $(MAKE) OBJDIR="$$PWD/objdir/" distclean + cd "$(PACKAGE)-$(VERSION)" && $(MAKE) dist $(RM) -r -- $(PACKAGE)-$(VERSION) install: - @for i in $(SUBDIRS); do (cd "$$i" && $(MAKE) install) || exit; done + @for i in $(SUBDIRS); do (cd "$$i" && \ + if [ -n "$(OBJDIR)" ]; then \ + $(MAKE) OBJDIR="$(OBJDIR)$$i/" install; \ + else $(MAKE) install; fi) || exit; done uninstall: - @for i in $(SUBDIRS); do (cd "$$i" && $(MAKE) uninstall) || exit; done + @for i in $(SUBDIRS); do (cd "$$i" && \ + if [ -n "$(OBJDIR)" ]; then \ + $(MAKE) OBJDIR="$(OBJDIR)$$i/" uninstall; \ + else $(MAKE) uninstall; fi) || exit; done .PHONY: all subdirs clean distclean dist distcheck install uninstall diff --git a/include/Makefile b/include/Makefile index 83f7c77..5cd62db 100644 --- a/include/Makefile +++ b/include/Makefile @@ -12,21 +12,37 @@ INCLUDEDIR= $(PREFIX)/include all: subdirs subdirs: - @for i in $(SUBDIRS); do (cd "$$i" && $(MAKE)) || exit; done + @for i in $(SUBDIRS); do (cd "$$i" && \ + if [ -n "$(OBJDIR)" ]; then \ + ([ -d "$(OBJDIR)$$i" ] || $(MKDIR) -- "$(OBJDIR)$$i") && \ + $(MAKE) OBJDIR="$(OBJDIR)$$i/"; \ + else $(MAKE); fi) || exit; done clean: - @for i in $(SUBDIRS); do (cd "$$i" && $(MAKE) clean) || exit; done + @for i in $(SUBDIRS); do (cd "$$i" && \ + if [ -n "$(OBJDIR)" ]; then \ + $(MAKE) OBJDIR="$(OBJDIR)$$i/" clean; \ + else $(MAKE) clean; fi) || exit; done distclean: - @for i in $(SUBDIRS); do (cd "$$i" && $(MAKE) distclean) || exit; done + @for i in $(SUBDIRS); do (cd "$$i" && \ + if [ -n "$(OBJDIR)" ]; then \ + $(MAKE) OBJDIR="$(OBJDIR)$$i/" distclean; \ + else $(MAKE) distclean; fi) || exit; done install: - @for i in $(SUBDIRS); do (cd "$$i" && $(MAKE) install) || exit; done + @for i in $(SUBDIRS); do (cd "$$i" && \ + if [ -n "$(OBJDIR)" ]; then \ + $(MAKE) OBJDIR="$(OBJDIR)$$i/" install; \ + else $(MAKE) install; fi) || exit; done $(MKDIR) $(DESTDIR)$(INCLUDEDIR) $(INSTALL) -m 0644 GToolkit.h $(DESTDIR)$(INCLUDEDIR)/GToolkit.h uninstall: - @for i in $(SUBDIRS); do (cd "$$i" && $(MAKE) uninstall) || exit; done + @for i in $(SUBDIRS); do (cd "$$i" && \ + if [ -n "$(OBJDIR)" ]; then \ + $(MAKE) OBJDIR="$(OBJDIR)$$i/" uninstall; \ + else $(MAKE) uninstall; fi) || exit; done $(RM) -- $(DESTDIR)$(INCLUDEDIR)/GToolkit.h .PHONY: all subdirs clean distclean install uninstall diff --git a/src/Makefile b/src/Makefile index 61e522b..9a33a18 100644 --- a/src/Makefile +++ b/src/Makefile @@ -1,4 +1,4 @@ -TARGETS = $(OBJDIR)libGToolkit.a $(OBJDIR)libGToolkit.so.0.0 $(OBJDIR)libGToolkit.so.0 $(OBJDIR)libGToolkit.so +TARGETS = $(OBJDIR)libGToolkit.a $(OBJDIR)libGToolkit$(SOEXT).0.0 $(OBJDIR)libGToolkit$(SOEXT).0 $(OBJDIR)libGToolkit$(SOEXT) OBJDIR = PREFIX = /usr/local DESTDIR = @@ -8,9 +8,12 @@ CPPFLAGSF= -I ../include CPPFLAGS= CFLAGSF = -W `pkg-config --cflags gl` CFLAGS = -Wall -fPIC -g -O2 -pedantic +EXEEXT = AR = ar +ARFLAGS = -rc RANLIB = ranlib CCSHARED= $(CC) -shared +SOEXT = .so RM = rm -f LN = ln -f MKDIR = mkdir -m 0755 -p @@ -24,13 +27,17 @@ libGToolkit_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS) libGToolkit_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) `pkg-config --libs gl` $(OBJDIR)libGToolkit.a: $(libGToolkit_OBJS) - $(AR) -rc $(OBJDIR)libGToolkit.a $(libGToolkit_OBJS) + $(AR) $(ARFLAGS) $(OBJDIR)libGToolkit.a $(libGToolkit_OBJS) $(RANLIB) $(OBJDIR)libGToolkit.a -$(OBJDIR)libGToolkit.so.0.0 $(OBJDIR)libGToolkit.so.0 $(OBJDIR)libGToolkit.so: $(libGToolkit_OBJS) - $(CCSHARED) -o $(OBJDIR)libGToolkit.so.0.0 -Wl,-soname,libGToolkit.so.0 $(libGToolkit_OBJS) $(libGToolkit_LDFLAGS) - $(LN) -s -- libGToolkit.so.0.0 $(OBJDIR)libGToolkit.so.0 - $(LN) -s -- libGToolkit.so.0.0 $(OBJDIR)libGToolkit.so +$(OBJDIR)libGToolkit$(SOEXT).0.0: $(libGToolkit_OBJS) + $(CCSHARED) -o $(OBJDIR)libGToolkit$(SOEXT).0.0 -Wl,-soname,libGToolkit$(SOEXT).0 $(libGToolkit_OBJS) $(libGToolkit_LDFLAGS) + +$(OBJDIR)libGToolkit$(SOEXT).0: $(OBJDIR)libGToolkit$(SOEXT).0.0 + $(LN) -s -- libGToolkit$(SOEXT).0.0 $(OBJDIR)libGToolkit$(SOEXT).0 + +$(OBJDIR)libGToolkit$(SOEXT): $(OBJDIR)libGToolkit$(SOEXT).0.0 + $(LN) -s -- libGToolkit$(SOEXT).0.0 $(OBJDIR)libGToolkit$(SOEXT) $(OBJDIR)common.o: common.c $(CC) $(libGToolkit_CFLAGS) -o $(OBJDIR)common.o -c common.c @@ -50,14 +57,14 @@ distclean: clean install: $(TARGETS) $(MKDIR) $(DESTDIR)$(PREFIX)/lib $(INSTALL) -m 0644 $(OBJDIR)libGToolkit.a $(DESTDIR)$(PREFIX)/lib/libGToolkit.a - $(INSTALL) -m 0755 $(OBJDIR)libGToolkit.so.0.0 $(DESTDIR)$(PREFIX)/lib/libGToolkit.so.0.0 - $(LN) -s -- libGToolkit.so.0.0 $(DESTDIR)$(PREFIX)/lib/libGToolkit.so.0 - $(LN) -s -- libGToolkit.so.0.0 $(DESTDIR)$(PREFIX)/lib/libGToolkit.so + $(INSTALL) -m 0755 $(OBJDIR)libGToolkit$(SOEXT).0.0 $(DESTDIR)$(PREFIX)/lib/libGToolkit$(SOEXT).0.0 + $(LN) -s -- libGToolkit$(SOEXT).0.0 $(DESTDIR)$(PREFIX)/lib/libGToolkit$(SOEXT).0 + $(LN) -s -- libGToolkit$(SOEXT).0.0 $(DESTDIR)$(PREFIX)/lib/libGToolkit$(SOEXT) uninstall: $(RM) -- $(DESTDIR)$(PREFIX)/lib/libGToolkit.a - $(RM) -- $(DESTDIR)$(PREFIX)/lib/libGToolkit.so.0.0 - $(RM) -- $(DESTDIR)$(PREFIX)/lib/libGToolkit.so.0 - $(RM) -- $(DESTDIR)$(PREFIX)/lib/libGToolkit.so + $(RM) -- $(DESTDIR)$(PREFIX)/lib/libGToolkit$(SOEXT).0.0 + $(RM) -- $(DESTDIR)$(PREFIX)/lib/libGToolkit$(SOEXT).0 + $(RM) -- $(DESTDIR)$(PREFIX)/lib/libGToolkit$(SOEXT) .PHONY: all clean distclean install uninstall diff --git a/tools/Makefile b/tools/Makefile index d426ba3..233c672 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -1,4 +1,4 @@ -TARGETS = $(OBJDIR)test +TARGETS = $(OBJDIR)test$(EXEEXT) OBJDIR = PREFIX = /usr/local DESTDIR = @@ -9,6 +9,7 @@ CPPFLAGSF= -I ../include CPPFLAGS= CFLAGSF = -W CFLAGS = -Wall -fPIC -g -O2 -pedantic +EXEEXT = RM = rm -f LN = ln -f MKDIR = mkdir -m 0755 -p @@ -21,8 +22,8 @@ test_OBJS = $(OBJDIR)test.o test_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS) test_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) -L$(OBJDIR). -L../src -L $(PREFIX)/lib -Wl,-rpath,$(PREFIX)/lib -lGToolkit -$(OBJDIR)test: $(test_OBJS) - $(CC) -o $(OBJDIR)test $(test_OBJS) $(test_LDFLAGS) +$(OBJDIR)test$(EXEEXT): $(test_OBJS) + $(CC) -o $(OBJDIR)test$(EXEEXT) $(test_OBJS) $(test_LDFLAGS) $(OBJDIR)test.o: test.c ../include/GToolkit.h $(CC) $(test_CFLAGS) -o $(OBJDIR)test.o -c test.c