chicken-janitors
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Chicken-janitors] [Chicken-bugs] #347: incorporate Makefile improvement


From: Chicken Scheme
Subject: [Chicken-janitors] [Chicken-bugs] #347: incorporate Makefile improvements reported by Ivan Shmakov
Date: Wed, 31 Oct 2007 07:25:32 -0000

#347: incorporate Makefile improvements reported by Ivan Shmakov
------------------+---------------------------------------------------------
Reporter:  felix  |       Owner:              
    Type:  task   |      Status:  new         
Priority:  minor  |   Component:  build system
 Version:  2.7    |    Keywords:              
------------------+---------------------------------------------------------
 {{{
 LIBCHICKEN_SHARED_OBJECTS = library$(O) eval$(O) extras$(O)
 lolevel$(O) utils$(O) \
        tcp$(O) srfi-1$(O) srfi-4$(O) srfi-13$(O) srfi-14$(O) srfi-18$(O) \
        $(POSIXFILE)$(O) regex$(O) regex-extras$(O) scheduler$(O)
 profiler$(O) stub$(O) match$(O) \
         scheduler$(O) profiler$(O) stub$(O) match$(O) runtime$(O)

        ... Why be so verbose?  This could easily be rolled down to:

 LIBCHICKEN_SHARED_OBJECTS = patsubst(%, %$(O), library eval extras
 lolevel utils tcp srfi-1 srfi-4 srfi-13 srfi-14 srfi-18 $(POSIXFILE)
 regex regex-extras scheduler profiler stub match scheduler profiler
 stub match runtime)

        Likewise for LIBCHICKEN_STATIC_OBJECTS:

 LIBCHICKEN_STATIC_OBJECTS = patsubst(%, %-static$(O), library eval
 extras lolevel utils tcp srfi-1 srfi-4 srfi-13 srfi-14 srfi-18
 $(POSIXFILE) regex regex-extras scheduler profiler stub match runtime)

        Noticing a common sublist here, one could squeeze these two even
        further (not to a much surprise -- the source code for both
        static and dynamically-linked version of Chicken is the same):

 LIBCHICKEN_OBJECTS_1 = \
        library eval extras lolevel utils tcp srfi-1 srfi-4 srfi-13 \
        srfi-14 srfi-18 $(POSIXFILE) regex regex-extras scheduler \
        profiler stub match
 LIBCHICKEN_SHARED_OBJECTS = \
        patsubst(%, %$(O), $(LIBCHICKEN_OBJECTS_1) scheduler profiler
 stub match runtime)
 LIBCHICKEN_STATIC_OBJECTS = \
        patsubst(%, %-static$(O), $(LIBCHICKEN_OBJECTS_1) runtime)

        If the duplicate entries aren't really necessary in
        LIBCHICKEN_SHARED_OBJECTS (and, I guess, it's the case), it
        shortens down to this, much more concise notation:

 LIBCHICKEN_OBJECTS_1 = \
        library eval extras lolevel utils tcp srfi-1 srfi-4 srfi-13 \
        srfi-14 srfi-18 $(POSIXFILE) regex regex-extras scheduler \
        profiler stub match runtime
 LIBCHICKEN_SHARED_OBJECTS = \
        patsubst(%, %$(O), $(LIBCHICKEN_OBJECTS_1))
 LIBCHICKEN_STATIC_OBJECTS = \
        patsubst(%, %-static$(O), $(LIBCHICKEN_OBJECTS_1))

        Performing this kind of optimization through the rules.make, the
        following could be obtained:

 --cut: rules.make.new--
 LIBCHICKEN_OBJECTS_1 = \
        library eval extras lolevel utils tcp srfi-1 srfi-4 srfi-13 \
        srfi-14 srfi-18 $(POSIXFILE) regex regex-extras scheduler \
        profiler stub match runtime
 LIBCHICKEN_SHARED_OBJECTS = $(LIBCHICKEN_OBJECTS_1:=$(O))
 LIBCHICKEN_STATIC_OBJECTS = $(LIBCHICKEN_OBJECTS_1:=-static$(O))

 LIBUCHICKEN_OBJECTS_1 = \
        ulibrary ueval uextras ulolevel uutils utcp usrfi-1 usrfi-4 \
        usrfi-13 usrfi-14 usrfi-18 u$(POSIXFILE) uregex scheduler \
        profiler stub match uruntime
 LIBUCHICKEN_SHARED_OBJECTS = $(LIBUCHICKEN_OBJECTS_1:=$(O))
 LIBUCHICKEN_STATIC_OBJECTS = $(LIBUCHICKEN_OBJECTS_1:=-static$(O))

 LIBCHICKENGUI_OBJECTS_1 = \
        library eval extras lolevel utils tcp srfi-1 srfi-4 srfi-13 \
        srfi-14 srfi-18 $(POSIXFILE) regex regex-extras scheduler \
        profiler stub match gui-runtime
 LIBCHICKENGUI_SHARED_OBJECTS = $(LIBCHICKENGUI_OBJECTS_1:=$(O))
 LIBCHICKENGUI_STATIC_OBJECTS = $(LIBCHICKENGUI_OBJECTS_1:=-static$(O))

 PCRE_OBJECTS_1 = \
        pcre/pcre_compile \
        pcre/pcre_config \
        pcre/pcre_dfa_exec \
        pcre/pcre_exec \
        pcre/pcre_fullinfo \
        pcre/pcre_get \
        pcre/pcre_globals \
        pcre/pcre_info \
        pcre/pcre_maketables \
        pcre/pcre_newline \
        pcre/pcre_ord2utf8 \
        pcre/pcre_refcount \
        pcre/pcre_study \
        pcre/pcre_tables \
        pcre/pcre_try_flipped \
        pcre/pcre_ucp_searchfuncs \
        pcre/pcre_valid_utf8 \
        pcre/pcre_version \
        pcre/pcre_xclass \
        pcre/pcre_chartables
 PCRE_SHARED_OBJECTS = $(PCRE_OBJECTS_1:=$(O))
 PCRE_STATIC_OBJECTS = $(PCRE_OBJECTS_1:=-static$(O))

 COMPILER_OBJECTS_1 = \
        chicken batch-driver compiler optimizer support \
        c-platform c-backend
 COMPILER_OBJECTS        = $(COMPILER_OBJECTS_1:=$(O))
 COMPILER_STATIC_OBJECTS = $(COMPILER_OBJECTS_1:=-static$(O))
 --cut: rules.make.new--
 }}}

-- 
Ticket URL: <http://trac.callcc.org/ticket/347>
Chicken Scheme <http://www.call-with-current-continuation.org/>
The CHICKEN Scheme-to-C compiler

reply via email to

[Prev in Thread] Current Thread [Next in Thread]