# HG changeset patch # User Jan Vrany # Date 1502313726 -3600 # Node ID 6a54e7e6592e9bd2718083a9816f220b8a2aa7b7 # Parent 4ec1c698757a66c88c428d745ab6602c266dedf2 Makefiles, UNIX: few optimizations in classlib (re)linking ...by: * reducing a number of sub-make invocations * avoiding linkage when nothing changes diff -r 4ec1c698757a -r 6a54e7e6592e makelib/rules.make --- a/makelib/rules.make Wed Aug 09 21:54:11 2017 +0100 +++ b/makelib/rules.make Wed Aug 09 22:22:06 2017 +0100 @@ -1016,22 +1016,8 @@ obj:: obj$(TARGET_RULE_EXTENSION) -obj_shared: newobj - @echo "making shared classObject ..." - @-if [ "$(LIBNAME)" != "" ]; then \ - if [ -f $(LIBNAME)$(OBJNAME) ]; then \ - echo "making shared object $(LIBNAME)$(SO_NAME)"; \ - if [ "$(LOCAL_SHARED_LIBS)" != "" ]; then \ - echo " local libs: $(LOCAL_SHARED_LIBS)"; \ - fi; \ - $(MAKE) $(LIBNAME)$(SO_NAME) LOCAL_SHARED_LIBS="$(LOCAL_SHARED_LIBS)"; \ - else \ - echo " ** $(LIBNAME)$(SO_NAME) not made - no $(LIBNAME)$(OBJNAME)"; \ - fi \ - fi - @-if [ "$(STUBLIBNAME)" != "" ]; then \ - $(MAKE) obj_shared_stub; \ - fi +obj_shared: newobj $(LIBNAME)$(SO_NAME) + obj_shared_stub: @-if [ -f $(STUBLIBNAME)$(OBJNAME) ]; then \ @@ -1058,7 +1044,7 @@ newobj_postlink:: @true "nothing done here" -newobj: $(LIBNAME)Init.c objs $(LINKOBJS) +newobj: objs $(LINKOBJS) @if [ "$(NEWOBJ_SUBDIRS)"x != x ]; then \ for i in "$(NEWOBJ_SUBDIRS)"; do \ if [ -d $$i ]; then \ @@ -1069,16 +1055,13 @@ fi @if [ "$(LIBNAME)" != "" ]; then \ if [ "$(LINKOBJS)" != "" ]; then \ - echo "making objs ..."; \ - $(MAKE) objs && \ echo "making init code ..." && \ - $(MAKE) $(LIBNAME)Init.o LIBNAME=$(LIBNAME) CC=$(CC) &&\ - $(MAKE) $(PRE_LD_ACTION) && \ - $(MAKE) newobj_prelink LIBNAME=$(LIBNAME) && \ - $(MAKE) $(LINKOBJRULE) LINKOBJS="$(LINKOBJS)" LIBNAME=$(LIBNAME) && \ - $(MAKE) newobj_postlink LIBNAME=$(LIBNAME) && \ - chmod -x,+w $(LIBNAME)$(OBJNAME) && \ - $(MAKE) $(POST_LD_ACTION); \ + $(MAKE) LINKOBJS="$(LINKOBJS)" LIBNAME=$(LIBNAME) \ + $(PRE_LD_ACTION) \ + newobj_prelink \ + $(LINKOBJRULE) \ + newobj_postlink \ + $(POST_LD_ACTION); \ else \ echo " ** $(LIBNAME)$(OBJNAME) not made - no object files (LINKOBJS=) defined"; \ fi \ @@ -1098,9 +1081,11 @@ @chmod -x,+w $(STUBLIBNAME)$(OBJNAME) @rm -f $(STUBLIBNAME)Stub.o $(STUBLIBNAME)Stub.c -newobj_link:: +newobj_link:: $(LIBNAME)$(OBJNAME) + +$(LIBNAME)$(OBJNAME): $(LIBNAME)Init.o $(LINKOBJS) @echo "linking class object ..." - $(CLASSLIB_LD) $(LD_REL_FLAG) $(LD_OBJ_FLAGS) $(LIBNAME)Init.o $(LINKOBJS) $(LD_OBJ_LIBS) $(LD_REL_OBJ_LIBS) -o $(LIBNAME)$(OBJNAME) + $(CLASSLIB_LD) $(LD_REL_FLAG) $(LD_OBJ_FLAGS) $^ $(LD_OBJ_LIBS) $(LD_REL_OBJ_LIBS) -o $@ newobj_staticLink:: @echo "linking static classLib object ..." @@ -2354,8 +2339,8 @@ # # generate a libXXXInit.c file from classList/modulList.stc # -$(LIBNAME)Init.c: Make.proto Make.spec libInit.cc - @cp libInit.cc $(LIBNAME)Init.c +$(LIBNAME)Init.o: libInit.cc Make.proto Make.spec + $(CC) $(CFLAGS) -x c -c $< -o $@ ntLibInit.c: $(LIBNAME)Init.c mv $(LIBNAME)Init.c ntLibInit.c