From: Owen Shepherd Date: Thu, 27 Dec 2012 00:19:04 +0000 (+0000) Subject: Jamfile, Jamrules: Convert to UNIX line endings X-Git-Url: https://pd.if.org/git/?p=pdclib.old;a=commitdiff_plain;h=83e92521e5b34c665a7200e71b93050a0234501e Jamfile, Jamrules: Convert to UNIX line endings --- diff --git a/Jamfile b/Jamfile index 92c10c2..e68be8b 100644 --- a/Jamfile +++ b/Jamfile @@ -1,65 +1,68 @@ -SubDir PDCLIB_TOP ; -if $(PDCLIB_PLATFORM) { - SubInclude PDCLIB_TOP platform $(PDCLIB_PLATFORM) ; - SubDir PDCLIB_TOP ; -} -PDCLibConfig ; - -PDCLIB_SOURCES = [ RecursiveGlob $(PDCLIB_TOP) : [ FDirName functions ] : *.c ] ; - -if $(PDCLIB_PLATFORM) { - PDCLIB_PLATFORM_SOURCE_DIR = - [ FDirName platform $(PDCLIB_PLATFORM) functions ] ; - PDCLIB_SOURCES += [ RecursiveGlob $(PDCLIB_TOP) : $(PDCLIB_PLATFORM_SOURCE_DIR) : *.c ] ; -} - -for opt in $(PDCLIB_OPTIONS) { - optdir = [ FDirName opt $(opt) ] ; - PDCLIB_SOURCES += [ RecursiveGlob $(PDCLIB_TOP) : $(optdir) : *.c ] ; -} - -Library $(PDCLIB) : $(PDCLIB_SOURCES) ; - -if ! $(PDCLIB_NO_TEST) { - for file in $(PDCLIB_SOURCES) { - testfile = $(file:S=_t) ; - regtestfile = $(file:S=_r) ; - test = $(file:S=-test) ; - regtest = $(file:S=-regtest) ; - - Object $(testfile).o : $(file) ; - MainFromObjects $(testfile) : $(testfile).o $(CRT0) ; - CCFLAGS on $(testfile).o += -DTEST $(PDCLIB_TEST_CCFLAGS) ; - LINKFLAGS on $(testfile)$(SUFEXE) += $(PDCLIB_TEST_LINKFLAGS) ; - LINKLIBS on $(testfile)$(SUFEXE) += $(PDCLIB_TEST_LINKLIBS) ; - LinkLibraries $(testfile) : $(PDCLIB) ; - Test $(test) : $(testfile) ; - - if ! $(PDCLIB_NO_REGTEST) { - Object $(regtestfile).o : $(file) ; - MainFromObjects $(regtestfile) : $(regtestfile).o ; - CCFLAGS on $(regtestfile).o += -DTEST -DREGTEST - $(PDCLIB_REGTEST_CCFLAGS) ; - CCHDRS on $(regtestfile).o = [ FIncludes [ FDirName testing ] ] $(PDCLIB_REGTEST_CCHDRS) ; - LINKFLAGS on $(regtestfile)$(SUFEXE) += $(PDCLIB_REGTEST_LINKFLAGS) ; - LINKLIBS on $(regtestfile)$(SUFEXE) += $(PDCLIB_REGTEST_LINKLIBS) ; - RegTest $(regtest) : $(regtestfile) ; - } - } -} - -rule HtmlMan { - DEPENDS htmlman : $(<) ; - DEPENDS $(<) : $(<:D) ; - DEPENDS $(<) : $(>) ; - MkDir $(<:D) ; -} - -actions HtmlMan { - mandoc -Thtml -Oincludes=../3/%I.html -Oman=../%S/%N.html -Ostyle=../style.css $(>) >$(<) -} - -for manpg in [ GLOB man3 : *.3 ] { - local section = [ SPLIT $(manpg:S) : . ] ; - HtmlMan [ FDirName html $(section) $(manpg:B).html ] : $(manpg) ; +SubDir PDCLIB_TOP ; +if $(PDCLIB_PLATFORM) { + SubInclude PDCLIB_TOP platform $(PDCLIB_PLATFORM) ; + SubDir PDCLIB_TOP ; +} +PDCLibConfig ; + +PDCLIB_SOURCES = [ RecursiveGlob $(PDCLIB_TOP) : [ FDirName functions ] : *.c ] ; + +if $(PDCLIB_PLATFORM) { + PDCLIB_PLATFORM_SOURCE_DIR = + [ FDirName platform $(PDCLIB_PLATFORM) functions ] ; + PDCLIB_SOURCES += [ RecursiveGlob $(PDCLIB_TOP) : $(PDCLIB_PLATFORM_SOURCE_DIR) : *.c ] ; +} + +for opt in $(PDCLIB_OPTIONS) { + optdir = [ FDirName opt $(opt) ] ; + PDCLIB_SOURCES += [ RecursiveGlob $(PDCLIB_TOP) : $(optdir) : *.c ] ; +} + +Library $(PDCLIB) : $(PDCLIB_SOURCES) ; + +if ! $(PDCLIB_NO_TEST) { + for file in $(PDCLIB_SOURCES) { + testfile = $(file:S=_t) ; + regtestfile = $(file:S=_r) ; + test = $(file:S=-test) ; + regtest = $(file:S=-regtest) ; + + Object $(testfile).o : $(file) ; + MainFromObjects $(testfile) : $(testfile).o $(CRT0) ; + CCFLAGS on $(testfile).o += -DTEST $(PDCLIB_TEST_CCFLAGS) ; + LINKFLAGS on $(testfile)$(SUFEXE) += $(PDCLIB_TEST_LINKFLAGS) ; + LINKLIBS on $(testfile)$(SUFEXE) += $(PDCLIB_TEST_LINKLIBS) ; + LinkLibraries $(testfile) : $(PDCLIB) ; + Test $(test) : $(testfile) ; + + if ! $(PDCLIB_NO_REGTEST) { + Object $(regtestfile).o : $(file) ; + MainFromObjects $(regtestfile) : $(regtestfile).o ; + CCFLAGS on $(regtestfile).o += -DTEST -DREGTEST + $(PDCLIB_REGTEST_CCFLAGS) ; + CCHDRS on $(regtestfile).o = [ FIncludes [ FDirName testing ] ] $(PDCLIB_REGTEST_CCHDRS) ; + LINKFLAGS on $(regtestfile)$(SUFEXE) += $(PDCLIB_REGTEST_LINKFLAGS) ; + LINKLIBS on $(regtestfile)$(SUFEXE) += $(PDCLIB_REGTEST_LINKLIBS) ; + RegTest $(regtest) : $(regtestfile) ; + } + } +} + +Main helloworld : helloworld.c ; +LinkLibraries helloworld : $(PDCLIB) ; + +rule HtmlMan { + DEPENDS htmlman : $(<) ; + DEPENDS $(<) : $(<:D) ; + DEPENDS $(<) : $(>) ; + MkDir $(<:D) ; +} + +actions HtmlMan { + mandoc -Thtml -Oincludes=../3/%I.html -Oman=../%S/%N.html -Ostyle=../style.css $(>) >$(<) +} + +for manpg in [ GLOB man3 : *.3 ] { + local section = [ SPLIT $(manpg:S) : . ] ; + HtmlMan [ FDirName html $(section) $(manpg:B).html ] : $(manpg) ; } \ No newline at end of file diff --git a/Jamrules b/Jamrules index 31da387..cf84e69 100644 --- a/Jamrules +++ b/Jamrules @@ -1,191 +1,201 @@ -PDCLIB ?= pdclib ; - -ECHO "PDCLIB_TOP: " $(PDCLIB_TOP) ; - -if ! $(PDCLIB_HAVE_PLATFORM) && ! $(PDCLIB_PLATFORM) { - if $(NT) { - PDCLIB_PLATFORM = "win32" ; - } else if $(UNIX) { - PDCLIB_PLATFORM = "posix" ; - } else { - ECHO PDCLIB_PLATFORM not set and platform not automatically detected ; - ECHO Set PDCLIB_PLATFORM to the platform to be built for ; - EXIT ; - } - PDCLIB_HAVE_PLATFORM = 1 ; -} - -if $(PDCLIB_TOOLCHAIN) = "" { - local __ccparts = [ SPLIT $(CC) : "-" ] ; - if $(JAM_TOOLSET) = "MINGW" || "gcc" in $(__ccparts) - || "clang" in $(__ccparts) { - # GCC / GCC-alike - PDCLIB_TOOLCHAIN = "gcc" ; - } else if $(JAM_TOOLSET) != "" { - PDCLIB_TOOLCHAIN = $(JAM_TOOLSET) ; - } else { - ECHO PDCLIB_TOOLCHAIN is unset and I can't glean what toolset is being ; - ECHO used from your environment. Please set it. ; - EXIT ; - } -} - -if $(PDCLIB_TOOLCHAIN) = "gcc" { - # No -Wcast-align : spurious warnings when using char* to do pointer - # arithmetic - # No -Winline : when compiling with e.g. -Os causes spurious - # warnings that call is unlikely/code size would grow - # No -Wredundant-decls : some functions must be multiply defined - PDCLIB_WARNINGS ?= - -Wall -Wextra -pedantic -Wno-unused-parameter -Wshadow - -Wpointer-arith -Wwrite-strings -Wmissing-declarations -Wno-long-long - -Wuninitialized - ; - PDCLIB_CCWARNINGS ?= - -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes ; - PDCLIB_CCFLAGS = - -ffreestanding - #-nostdinc - -std=c11 - -g - -D_PDCLIB_BUILD - $(PDCLIB_WARNINGS) ; - PDCLIB_C++FLAGS = - -ffreestanding - #-nostdinc - -std=c++11 - -g - -D_PDCLIB_BUILD - $(PDCLIB_WARNINGS) ; - - actions Link bind NEEDLIBS - { - $(LINK) $(LINKFLAGS) -o $(<) $(UNDEFS) $(>) -Wl,--start-group $(NEEDLIBS) $(LINKLIBS) -Wl,--end-group - } -} else if $(PDCLIB_TOOLCHAIN) = "WATCOM" { - ECHO "Watcom!" ; - CCFLAGS = /zq /DWIN32 /zls ; - C++FLAGS = /zq /DWIN32 /zls ; - STDHDRS = $(WATCOM)\\h\\nt ; - PDCLIB_CCFLAGS = "-za99 -zl -s" ; -} else { - ECHO The value of PDCLIB_TOOLCHAIN is not recognized ; - ECHO Currently set to $(PDCLIB_TOOLCHAIN) ; - EXIT ; -} - -if $(PDCLIB_PLATFORM) { - include [ FDirName $(PDCLIB_TOP) platform $(PDCLIB_PLATFORM) Config.jam ] ; -} - -rule PDCLibHeaders { - SubDirHdrs $(PDCLIB_TOP) includes ; - SubDirHdrs $(PDCLIB_TOP) internals ; - SubDirHdrs $(PDCLIB_TOP) testing ; - for opt in $(PDCLIB_OPTIONS) { - SubDirHdrs $(PDCLIB_TOP) opt $(opt) ; - } - PDCLibTargetHeaders ; -} - -rule PDCLibConfig { - SubDirCcFlags $(PDCLIB_CCFLAGS) ; - SubDirC++Flags $(PDCLIB_C++FLAGS) ; - PDCLibHeaders ; - PDCLibTargetConfig ; -} - -# MinGW needs appropriate prodding to cretae executables -if $(TOOLSET) = MINGW { - PDCLIB_TEST_LINKFLAGS += -mconsole ; - PDCLIB_REGTEST_LINKFLAGS += -mconsole ; -} - -# Tests -ALWAYS regtest test ; - -rule Test { - DEPENDS $(<) : $(>) ; - ALWAYS $(<) ; - DEPENDS test : $(<) ; -} - -rule RegTest { - DEPENDS $(<) : $(>) ; - ALWAYS $(<) ; - DEPENDS regtest : $(<) ; -} - -actions Test { - $(>) -} - -actions RegTest { - $(>) -} - -# list all files in a directory, except ., .. -# [ ListDir base : dirname ] -rule ListDir { - # start with empty list - local _result = ; - - # for each file in the directory - local _dirlist = [ GLOB [ FDirName $(1) $(2) ] : * ] ; - for _subdir in $(_dirlist) { - - # if it is not . or .. - switch $(_subdir) { - case *\\. : _dummy = "" ; # is there some no-op statement? - case *\\.. : _dummy = "" ; # is there some no-op statement? - case * : - # add it to the list - _result += $(_subdir:D=$(2)) ; - } - } - - # return resulting list - return $(_result) ; -} - -# same as glob, but recurses into subdirs -rule RecursiveGlob { - # initially use the files in the current directory - local _dir = $(2) ; - local _path = [ FDirName $(1) $(2) ] ; - local _result = [ GLOB $(_path) : $(3) ] ; - _result = $(_result:D=$(_dir)) ; - - # list all subdirectories (and files, but it doesn't hurt) - local _subdirlist = [ ListDir $(1) : $(2) ] ; - - # for each subdir/file - for _subdir in $(_subdirlist) { - # recurse into it - _result += [ RecursiveGlob $(1) : $(_subdir) : $(3) ] ; - } - - # return the resulting list - return $(_result) ; -} - -# Fix to work on targets in subdirs -rule MakeLocate -{ - # Note we grist the directory name with 'dir', - # so that directory path components and other - # targets don't conflict. - - if $(>) - { - local _rev = [ FReverse $(>) ] ; - if $(_rev[1]) = "." { - _rev = $(_rev[2-]) ; - } - local _dir = [ FDirName [ FReverse $(_rev) ] $(<[0]:D) ] ; - - LOCATE on $(<) = [ FDirName $(>) ] ; - Depends $(<) : $(_dir:G=dir) ; - MkDir $(_dir:G=dir) ; - } +PDCLIB ?= pdclib ; + +ECHO "PDCLIB_TOP: " $(PDCLIB_TOP) ; + +if ! $(PDCLIB_HAVE_PLATFORM) && ! $(PDCLIB_PLATFORM) { + if $(NT) { + PDCLIB_PLATFORM = "win32" ; + } else if $(UNIX) { + PDCLIB_PLATFORM = "posix" ; + } else { + ECHO PDCLIB_PLATFORM not set and platform not automatically detected ; + ECHO Set PDCLIB_PLATFORM to the platform to be built for ; + EXIT ; + } + PDCLIB_HAVE_PLATFORM = 1 ; +} + +if $(PDCLIB_TOOLCHAIN) = "" { + local __ccparts = [ SPLIT $(CC) : "-" ] ; + if $(JAM_TOOLSET) = "MINGW" || "gcc" in $(__ccparts) + || "clang" in $(__ccparts) { + # GCC / GCC-alike + PDCLIB_TOOLCHAIN = "gcc" ; + } else if $(JAM_TOOLSET) != "" { + PDCLIB_TOOLCHAIN = $(JAM_TOOLSET) ; + } else { + ECHO PDCLIB_TOOLCHAIN is unset and I can't glean what toolset is being ; + ECHO used from your environment. Please set it. ; + EXIT ; + } +} + +if $(PDCLIB_TOOLCHAIN) = "gcc" { + # No -Wcast-align : spurious warnings when using char* to do pointer + # arithmetic + # No -Winline : when compiling with e.g. -Os causes spurious + # warnings that call is unlikely/code size would grow + # No -Wredundant-decls : some functions must be multiply defined + PDCLIB_WARNINGS ?= + -Wall -Wextra -pedantic -Wno-unused-parameter -Wshadow + -Wpointer-arith -Wwrite-strings -Wmissing-declarations -Wno-long-long + -Wuninitialized + ; + PDCLIB_CCWARNINGS ?= + -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes ; + PDCLIB_CCFLAGS = + -ffreestanding + #-nostdinc + -std=c11 + -g + -D_PDCLIB_BUILD + $(PDCLIB_WARNINGS) ; + PDCLIB_C++FLAGS = + -ffreestanding + #-nostdinc + -std=c++11 + -g + -D_PDCLIB_BUILD + $(PDCLIB_WARNINGS) ; + + if $(OS) = "MACOSX" { + # ld64 does automatic repeated searches of archives + # and doesn't accept --start-group/--end-group + + #actions Link bind NEEDLIBS + #{ + # $(LINK) $(LINKFLAGS) -o $(<) $(UNDEFS) $(>) $(NEEDLIBS) $(LINKLIBS) + #} + } else { + actions Link bind NEEDLIBS + { + $(LINK) $(LINKFLAGS) -o $(<) $(UNDEFS) $(>) -Wl,--start-group $(NEEDLIBS) $(LINKLIBS) -Wl,--end-group + } + } +} else if $(PDCLIB_TOOLCHAIN) = "WATCOM" { + ECHO "Watcom!" ; + CCFLAGS = /zq /DWIN32 /zls ; + C++FLAGS = /zq /DWIN32 /zls ; + STDHDRS = $(WATCOM)\\h\\nt ; + PDCLIB_CCFLAGS = "-za99 -zl -s" ; +} else { + ECHO The value of PDCLIB_TOOLCHAIN is not recognized ; + ECHO Currently set to $(PDCLIB_TOOLCHAIN) ; + EXIT ; +} + +if $(PDCLIB_PLATFORM) { + include [ FDirName $(PDCLIB_TOP) platform $(PDCLIB_PLATFORM) Config.jam ] ; +} + +rule PDCLibHeaders { + SubDirHdrs $(PDCLIB_TOP) includes ; + SubDirHdrs $(PDCLIB_TOP) internals ; + SubDirHdrs $(PDCLIB_TOP) testing ; + for opt in $(PDCLIB_OPTIONS) { + SubDirHdrs $(PDCLIB_TOP) opt $(opt) ; + } + PDCLibTargetHeaders ; +} + +rule PDCLibConfig { + SubDirCcFlags $(PDCLIB_CCFLAGS) ; + SubDirC++Flags $(PDCLIB_C++FLAGS) ; + PDCLibHeaders ; + PDCLibTargetConfig ; +} + +# MinGW needs appropriate prodding to cretae executables +if $(TOOLSET) = MINGW { + PDCLIB_TEST_LINKFLAGS += -mconsole ; + PDCLIB_REGTEST_LINKFLAGS += -mconsole ; +} + +# Tests +ALWAYS regtest test ; + +rule Test { + DEPENDS $(<) : $(>) ; + ALWAYS $(<) ; + DEPENDS test : $(<) ; +} + +rule RegTest { + DEPENDS $(<) : $(>) ; + ALWAYS $(<) ; + DEPENDS regtest : $(<) ; +} + +actions Test { + $(>) +} + +actions RegTest { + $(>) +} + +# list all files in a directory, except ., .. +# [ ListDir base : dirname ] +rule ListDir { + # start with empty list + local _result = ; + + # for each file in the directory + local _dirlist = [ GLOB [ FDirName $(1) $(2) ] : * ] ; + for _subdir in $(_dirlist) { + + # if it is not . or .. + switch $(_subdir) { + case *\\. : _dummy = "" ; # is there some no-op statement? + case *\\.. : _dummy = "" ; # is there some no-op statement? + case * : + # add it to the list + _result += $(_subdir:D=$(2)) ; + } + } + + # return resulting list + return $(_result) ; +} + +# same as glob, but recurses into subdirs +rule RecursiveGlob { + # initially use the files in the current directory + local _dir = $(2) ; + local _path = [ FDirName $(1) $(2) ] ; + local _result = [ GLOB $(_path) : $(3) ] ; + _result = $(_result:D=$(_dir)) ; + + # list all subdirectories (and files, but it doesn't hurt) + local _subdirlist = [ ListDir $(1) : $(2) ] ; + + # for each subdir/file + for _subdir in $(_subdirlist) { + # recurse into it + _result += [ RecursiveGlob $(1) : $(_subdir) : $(3) ] ; + } + + # return the resulting list + return $(_result) ; +} + +# Fix to work on targets in subdirs +rule MakeLocate +{ + # Note we grist the directory name with 'dir', + # so that directory path components and other + # targets don't conflict. + + if $(>) + { + local _rev = [ FReverse $(>) ] ; + if $(_rev[1]) = "." { + _rev = $(_rev[2-]) ; + } + local _dir = [ FDirName [ FReverse $(_rev) ] $(<[0]:D) ] ; + + LOCATE on $(<) = [ FDirName $(>) ] ; + Depends $(<) : $(_dir:G=dir) ; + MkDir $(_dir:G=dir) ; + } } \ No newline at end of file