You can subscribe to this list here.
| 2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(19) |
Nov
(45) |
Dec
(80) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2004 |
Jan
(58) |
Feb
(127) |
Mar
(74) |
Apr
(34) |
May
(117) |
Jun
(14) |
Jul
(26) |
Aug
(13) |
Sep
(1) |
Oct
(38) |
Nov
(13) |
Dec
(5) |
| 2005 |
Jan
(108) |
Feb
(134) |
Mar
(54) |
Apr
(133) |
May
(16) |
Jun
(54) |
Jul
(128) |
Aug
(99) |
Sep
(157) |
Oct
(182) |
Nov
(236) |
Dec
(212) |
| 2006 |
Jan
(86) |
Feb
(76) |
Mar
(121) |
Apr
(27) |
May
(7) |
Jun
(1) |
Jul
(6) |
Aug
(28) |
Sep
(1) |
Oct
(27) |
Nov
(5) |
Dec
|
| 2007 |
Jan
(32) |
Feb
(22) |
Mar
(22) |
Apr
(11) |
May
(3) |
Jun
(12) |
Jul
(11) |
Aug
(9) |
Sep
(37) |
Oct
(4) |
Nov
(9) |
Dec
(51) |
| 2008 |
Jan
(7) |
Feb
(31) |
Mar
(46) |
Apr
(31) |
May
(5) |
Jun
(27) |
Jul
(12) |
Aug
(5) |
Sep
(13) |
Oct
(24) |
Nov
(112) |
Dec
(15) |
| 2009 |
Jan
(6) |
Feb
(103) |
Mar
(66) |
Apr
(9) |
May
(8) |
Jun
(1) |
Jul
(20) |
Aug
(9) |
Sep
(2) |
Oct
(81) |
Nov
(88) |
Dec
(30) |
| 2010 |
Jan
(65) |
Feb
(57) |
Mar
(22) |
Apr
(12) |
May
(4) |
Jun
(12) |
Jul
(43) |
Aug
(6) |
Sep
(6) |
Oct
(4) |
Nov
(6) |
Dec
(3) |
| 2011 |
Jan
(10) |
Feb
(27) |
Mar
(11) |
Apr
(9) |
May
(69) |
Jun
(73) |
Jul
(67) |
Aug
(116) |
Sep
(40) |
Oct
(11) |
Nov
(34) |
Dec
(19) |
| 2012 |
Jan
|
Feb
(4) |
Mar
(28) |
Apr
(18) |
May
(9) |
Jun
(7) |
Jul
(4) |
Aug
(155) |
Sep
(264) |
Oct
(172) |
Nov
(15) |
Dec
(40) |
| 2013 |
Jan
(1) |
Feb
(2) |
Mar
|
Apr
|
May
|
Jun
(20) |
Jul
(76) |
Aug
(67) |
Sep
(49) |
Oct
(27) |
Nov
(3) |
Dec
(3) |
| 2014 |
Jan
(7) |
Feb
(7) |
Mar
(16) |
Apr
|
May
(4) |
Jun
(1) |
Jul
(18) |
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
| 2015 |
Jan
(6) |
Feb
(5) |
Mar
(3) |
Apr
(23) |
May
(5) |
Jun
|
Jul
(2) |
Aug
(4) |
Sep
|
Oct
|
Nov
(2) |
Dec
(4) |
| 2016 |
Jan
(2) |
Feb
(7) |
Mar
(2) |
Apr
(1) |
May
(14) |
Jun
(3) |
Jul
|
Aug
(3) |
Sep
|
Oct
|
Nov
(1) |
Dec
(3) |
| 2017 |
Jan
(6) |
Feb
|
Mar
(3) |
Apr
|
May
|
Jun
|
Jul
|
Aug
(12) |
Sep
(6) |
Oct
|
Nov
(3) |
Dec
|
| 2018 |
Jan
(4) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
(8) |
Sep
|
Oct
|
Nov
|
Dec
(1) |
| 2019 |
Jan
|
Feb
|
Mar
(4) |
Apr
|
May
|
Jun
|
Jul
|
Aug
(3) |
Sep
(8) |
Oct
|
Nov
(2) |
Dec
(25) |
| 2020 |
Jan
|
Feb
(3) |
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
(3) |
Oct
(53) |
Nov
(33) |
Dec
|
| 2021 |
Jan
(2) |
Feb
|
Mar
|
Apr
|
May
|
Jun
(2) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(4) |
Dec
(5) |
| 2022 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
(5) |
Jul
(93) |
Aug
(206) |
Sep
(39) |
Oct
(19) |
Nov
(11) |
Dec
|
| 2023 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(2) |
Jun
(150) |
Jul
(124) |
Aug
(14) |
Sep
(5) |
Oct
|
Nov
(1) |
Dec
|
| 2024 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(12) |
Jul
(62) |
Aug
|
Sep
(7) |
Oct
|
Nov
(7) |
Dec
|
| 2025 |
Jan
|
Feb
|
Mar
|
Apr
(14) |
May
(3) |
Jun
|
Jul
|
Aug
(76) |
Sep
(214) |
Oct
(6) |
Nov
|
Dec
|
|
From: <kin...@us...> - 2025-08-29 22:19:27
|
Revision: 7336
http://sourceforge.net/p/teem/code/7336
Author: kindlmann
Date: 2025-08-29 22:19:26 +0000 (Fri, 29 Aug 2025)
Log Message:
-----------
fixing (and clarifying in comments) handling of TEEM_EXT_IPATH and TEEM_EXT_LPATH
Modified Paths:
--------------
teem/trunk/src/GNUmakefile
teem/trunk/src/make/externals.mk
Modified: teem/trunk/src/GNUmakefile
===================================================================
--- teem/trunk/src/GNUmakefile 2025-08-29 16:59:41 UTC (rev 7335)
+++ teem/trunk/src/GNUmakefile 2025-08-29 22:19:26 UTC (rev 7336)
@@ -51,9 +51,6 @@
#### env var TEEM_DEST (because now any "install" should be done via CMake)
#### make vars ARCH, SUBARCH
#### everything about shared libraries: TEEM_LINK_SHARED, SHEXT
-#### as well as variables TEEM_EXT_IPATH and TEEM_EXT_LPATH (for all EXT externals
-#### PNG ZLIB BZIP2 PTHREAD LEVMAR FFTW3, e.g TEEM_ZLIB_IPATH, TEEM_ZLIB_LPATH);
-#### these have become EXT.DASHI and EXT.DASHL set in make/externals.mk
####
#### file errorCheck.mk gone (so simple, nothing left to error check)
#### make var KNOWN_ARCH
@@ -283,9 +280,9 @@
$(subst XXX,$(X),$(2)))))))
Externs.dashD = $(call forExtern,$(1),-DTEEM_XXX=1)
evallist = $(foreach var,$(1),$($(var)))
-maybe.prefix = $(if $(2),$(1)$(2))
-Externs.dashI = $(call maybe.prefix,-I,$(call evallist,$(call forExtern,$(1),TEEM_XXX_DASHI)))
-Externs.dashL = $(call maybe.prefix,-L,$(call evallist,$(call forExtern,$(1),TEEM_XXX_DASHL)))
+maybe.prefixen = $(if $(2),$(foreach P,$(2),$(1)$(P)))
+Externs.dashI = $(call maybe.prefixen,-I,$(strip $(call evallist,$(call forExtern,$(1),TEEM_XXX_IPATH))))
+Externs.dashL = $(call maybe.prefixen,-L,$(strip $(call evallist,$(call forExtern,$(1),TEEM_XXX_LPATH))))
Externs.llink = $(call evallist,$(call forExtern,$(1),XXX.llink))
## DEBUG
Modified: teem/trunk/src/make/externals.mk
===================================================================
--- teem/trunk/src/make/externals.mk 2025-08-29 16:59:41 UTC (rev 7335)
+++ teem/trunk/src/make/externals.mk 2025-08-29 22:19:26 UTC (rev 7336)
@@ -30,13 +30,13 @@
## If external EXT is enabled during make, then *preprocessor symbol* TEEM_EXT will be
## effectively #define'd as "1" during source file compilation.
##
-## TeemV2 renamed:
-## TEEM_EXT_IPATH --> TEEM_EXT_DASHI
-## TEEM_EXT_LPATH --> TEEM_EXT_DASHL
-## and these variables can now be set here (since there are no longer multiple
-## architectures to simultaneously support). Being perfectly consistent with the
-## of the V2 reworking of GNUmake stuff would have used EXT.dashI and EXT.dashL
-## but the shell sometimes gets confused by variables with a "." inside
+## TeemV2 renamed moved the variables describing each external to here (since there are
+## no longer multiple architectures to simultaneously support). The TEEM_EXT_IPATH and
+## TEEM_EXT_LPATH variables have kept their name, but now their names are accurate: you
+## no longer start TEEM_EXT_IPATH with "-I" or TEEM_EXT_LPATH with "-L". They really just
+## just be the path; it is the job of the functions Externs.dashD and Externs.dashI
+## (defined in ../GNUmakefile and used in template.mk) to add the -I and -L to each path
+## as needed.
##
AllExterns = PNG ZLIB BZIP2 PTHREAD LEVMAR FFTW3
@@ -45,8 +45,8 @@
## Header file is <png.h>
PNG.llink = -lpng
nrrd.Externs += PNG
-TEEM_PNG_DASHI ?=
-TEEM_PNG_DASHL ?=
+TEEM_PNG_IPATH ?=
+TEEM_PNG_LPATH ?=
## ZLIB: for the zlib library (in gzip and PNG image format) from https://zlib.net/
## Using zlib enables the "gzip" nrrd data encoding
@@ -53,8 +53,8 @@
## Header file is <zlib.h>.
ZLIB.llink = -lz
nrrd.Externs += ZLIB
-TEEM_ZLIB_DASHI ?=
-TEEM_ZLIB_DASHL ?=
+TEEM_ZLIB_IPATH ?=
+TEEM_ZLIB_LPATH ?=
## BZIP2: for the bzip2 compression library, from https://sourceware.org/bzip2/
## Using bzip2 enables the "bzip2" nrrd data encoding.
@@ -61,8 +61,8 @@
## Header file is <bzlib.h>.
BZIP2.llink = -lbz2
nrrd.Externs += BZIP2
-TEEM_BZIP2_DASHI ?=
-TEEM_BZIP2_DASHL ?=
+TEEM_BZIP2_IPATH ?=
+TEEM_BZIP2_LPATH ?=
## PTHREAD: use pthread-based multi-threading in airThreads. Note that Windows has its
## own multithreading capabilities, which is used in airThread if !TEEM_PTHREAD, and we
@@ -70,8 +70,8 @@
## Header file is <pthread.h>
PTHREAD.llink = -lpthread
air.Externs += PTHREAD
-TEEM_PTHREAD_DASHI ?=
-TEEM_PTHREAD_DASHL ?=
+TEEM_PTHREAD_IPATH ?=
+TEEM_PTHREAD_LPATH ?=
## LEVMAR: Levenberg-Marquardt from https://users.ics.forth.gr/~lourakis/levmar/
## Header file is <levmar.h>
@@ -78,12 +78,12 @@
LEVMAR.llink = -llevmar
ten.Externs += LEVMAR
elf.Externs += LEVMAR
-TEEM_LEVMAR_DASHI ?=
-TEEM_LEVMAR_DASHL ?=
+TEEM_LEVMAR_IPATH ?=
+TEEM_LEVMAR_LPATH ?=
## FFTW3: FFTW version 3 from https://www.fftw.org/
## Header file is <fftw3.h>
FFTW3.llink = -lfftw3
nrrd.Externs += FFTW3
-TEEM_FFTW3_DASHI ?=
-TEEM_FFTW3_DASHL ?=
+TEEM_FFTW3_IPATH ?=
+TEEM_FFTW3_LPATH ?=
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <kin...@us...> - 2025-08-29 16:59:43
|
Revision: 7335
http://sourceforge.net/p/teem/code/7335
Author: kindlmann
Date: 2025-08-29 16:59:41 +0000 (Fri, 29 Aug 2025)
Log Message:
-----------
more comments on chatgpt-assisted cmake code
Modified Paths:
--------------
teem/trunk/CMake/FindFFTW3.cmake
Added Paths:
-----------
teem/trunk/CMake/FindFFTW3-multiprec.cmake
Added: teem/trunk/CMake/FindFFTW3-multiprec.cmake
===================================================================
--- teem/trunk/CMake/FindFFTW3-multiprec.cmake (rev 0)
+++ teem/trunk/CMake/FindFFTW3-multiprec.cmake 2025-08-29 16:59:41 UTC (rev 7335)
@@ -0,0 +1,156 @@
+# NOTE: this was written entirely by ChatFPT, and it has not been used or tested.
+# It suggested these as precedent:
+# https://github.com/acoustid/chromaprint/blob/master/cmake/modules/FindFFTW3.cmake
+# https://github.com/egpbos/findFFTW
+
+# - Find the FFTW3 library (Fastest Fourier Transform in the West).
+#
+# This module tries two strategies:
+# 1. First, rely on CMake’s built-in package support (works only if FFTW3
+# was itself built and installed with CMake, which is often *not* the case).
+# 2. If that fails, fall back to manual search: locate headers and libraries
+# by hand and create imported targets.
+#
+# Provides the following IMPORTED targets on success:
+#
+# FFTW3::fftw3 - double precision base library
+# FFTW3::fftw3f - single precision base library (optional)
+# FFTW3::fftw3l - long double precision base library (optional)
+#
+# FFTW3::fftw3_threads - threads support for double precision
+# FFTW3::fftw3f_threads - threads support for single precision
+# FFTW3::fftw3l_threads - threads support for long double
+#
+# Variables defined:
+# FFTW3_FOUND, FFTW3_INCLUDE_DIR, FFTW3_LIBRARY, etc.
+#
+# Example usage:
+# find_package(FFTW3 REQUIRED)
+# target_link_libraries(myexe PRIVATE FFTW3::fftw3)
+# # optionally: FFTW3::fftw3f, FFTW3::fftw3_threads, etc.
+#
+
+# -------------------------------------------------------------------------
+# STEP 1: Check if CMake’s own FFTW3 package support already worked.
+# If so, we don’t need to do anything else.
+# -------------------------------------------------------------------------
+if (NOT FFTW3_FOUND)
+
+ include(FindPackageHandleStandardArgs)
+
+ # -----------------------------------------------------------------------
+ # STEP 2: Custom fallback — locate FFTW headers and libraries manually.
+ # -----------------------------------------------------------------------
+
+ # Look for header
+ find_path(FFTW3_INCLUDE_DIR
+ NAMES fftw3.h
+ HINTS ENV FFTW3_DIR ENV FFTW_DIR
+ PATH_SUFFIXES include
+ )
+
+ # ---- Double precision (the "default" libfftw3) ----
+ find_library(FFTW3_LIBRARY
+ NAMES fftw3
+ HINTS ENV FFTW3_DIR ENV FFTW_DIR
+ PATH_SUFFIXES lib
+ )
+
+ # ---- Single precision (libfftw3f) ----
+ find_library(FFTW3F_LIBRARY
+ NAMES fftw3f
+ HINTS ENV FFTW3_DIR ENV FFTW_DIR
+ PATH_SUFFIXES lib
+ )
+
+ # ---- Long double precision (libfftw3l) ----
+ find_library(FFTW3L_LIBRARY
+ NAMES fftw3l
+ HINTS ENV FFTW3_DIR ENV FFTW_DIR
+ PATH_SUFFIXES lib
+ )
+
+ # ---- Threaded variants (may or may not exist) ----
+ find_library(FFTW3_THREADS_LIBRARY
+ NAMES fftw3_threads
+ HINTS ENV FFTW3_DIR ENV FFTW_DIR
+ PATH_SUFFIXES lib
+ )
+ find_library(FFTW3F_THREADS_LIBRARY
+ NAMES fftw3f_threads
+ HINTS ENV FFTW3_DIR ENV FFTW_DIR
+ PATH_SUFFIXES lib
+ )
+ find_library(FFTW3L_THREADS_LIBRARY
+ NAMES fftw3l_threads
+ HINTS ENV FFTW3_DIR ENV FFTW_DIR
+ PATH_SUFFIXES lib
+ )
+
+ # Check at least the base double precision lib
+ find_package_handle_standard_args(FFTW3
+ REQUIRED_VARS FFTW3_LIBRARY FFTW3_INCLUDE_DIR
+ )
+
+ # -----------------------------------------------------------------------
+ # STEP 3: Define IMPORTED targets for each library found.
+ # -----------------------------------------------------------------------
+ if (FFTW3_FOUND)
+
+ # --- Double precision ---
+ if (NOT TARGET FFTW3::fftw3)
+ add_library(FFTW3::fftw3 UNKNOWN IMPORTED)
+ set_target_properties(FFTW3::fftw3 PROPERTIES
+ IMPORTED_LOCATION "${FFTW3_LIBRARY}"
+ INTERFACE_INCLUDE_DIRECTORIES "${FFTW3_INCLUDE_DIR}"
+ )
+ endif()
+
+ # --- Single precision ---
+ if (FFTW3F_LIBRARY AND NOT TARGET FFTW3::fftw3f)
+ add_library(FFTW3::fftw3f UNKNOWN IMPORTED)
+ set_target_properties(FFTW3::fftw3f PROPERTIES
+ IMPORTED_LOCATION "${FFTW3F_LIBRARY}"
+ INTERFACE_INCLUDE_DIRECTORIES "${FFTW3_INCLUDE_DIR}"
+ )
+ endif()
+
+ # --- Long double precision ---
+ if (FFTW3L_LIBRARY AND NOT TARGET FFTW3::fftw3l)
+ add_library(FFTW3::fftw3l UNKNOWN IMPORTED)
+ set_target_properties(FFTW3::fftw3l PROPERTIES
+ IMPORTED_LOCATION "${FFTW3L_LIBRARY}"
+ INTERFACE_INCLUDE_DIRECTORIES "${FFTW3_INCLUDE_DIR}"
+ )
+ endif()
+
+ # --- Threads (double) ---
+ if (FFTW3_THREADS_LIBRARY AND NOT TARGET FFTW3::fftw3_threads)
+ add_library(FFTW3::fftw3_threads UNKNOWN IMPORTED)
+ set_target_properties(FFTW3::fftw3_threads PROPERTIES
+ IMPORTED_LOCATION "${FFTW3_THREADS_LIBRARY}"
+ INTERFACE_LINK_LIBRARIES FFTW3::fftw3
+ )
+ endif()
+
+ # --- Threads (single) ---
+ if (FFTW3F_THREADS_LIBRARY AND NOT TARGET FFTW3::fftw3f_threads)
+ add_library(FFTW3::fftw3f_threads UNKNOWN IMPORTED)
+ set_target_properties(FFTW3::fftw3f_threads PROPERTIES
+ IMPORTED_LOCATION "${FFTW3F_THREADS_LIBRARY}"
+ INTERFACE_LINK_LIBRARIES FFTW3::fftw3f
+ )
+ endif()
+
+ # --- Threads (long double) ---
+ if (FFTW3L_THREADS_LIBRARY AND NOT TARGET FFTW3::fftw3l_threads)
+ add_library(FFTW3::fftw3l_threads UNKNOWN IMPORTED)
+ set_target_properties(FFTW3::fftw3l_threads PROPERTIES
+ IMPORTED_LOCATION "${FFTW3L_THREADS_LIBRARY}"
+ INTERFACE_LINK_LIBRARIES FFTW3::fftw3l
+ )
+ endif()
+
+ endif()
+
+endif()
Modified: teem/trunk/CMake/FindFFTW3.cmake
===================================================================
--- teem/trunk/CMake/FindFFTW3.cmake 2025-08-28 23:49:09 UTC (rev 7334)
+++ teem/trunk/CMake/FindFFTW3.cmake 2025-08-29 16:59:41 UTC (rev 7335)
@@ -17,17 +17,28 @@
# along with this library; if not, see <https://www.gnu.org/licenses/>.
#
-# Even though CMake already has a built-in FindFFTW3.cmake, it assumes that
-# fftw3 was installed locally via CMake, but that's not what e.g. Homebrew
-# or apt actually does, so find_package(FFTW3) can succeed but is not able
-# to define imported targets for use with target_link_libraries(FFTW3::fftw3)
-# This is a long-standing issue: https://github.com/FFTW/fftw3/issues/130
-# NOTE: the solution herein was written largely by ChatGPT
+# Even though CMake already has a built-in FindFFTW3.cmake, it assumes that fftw3 was
+# installed locally via CMake, but that's not what e.g. (mac) brew or (linux) apt
+# actually does, so find_package(FFTW3) can succeed but is not able to define imported
+# targets for use with target_link_libraries(FFTW3::fftw3) This is a long-standing issue:
+# https://github.com/FFTW/fftw3/issues/130
+# and there must be various solutions out there, since ChatGPT basically wrote the code
+# below (and is characterically unable to provide a citation for similarly simple but
+# working code online)
-# Try the built-in one first (if available)
+# TODO: handle the various variants for different precisions
+# See FindFFTW3-multiprec.cmake for inspiration
+
+# NOTE: If a working FFTW3Config.cmake is found, it will define
+# FFTW3::fftw3 for us already, so we don’t have to do anything else.
+# This fallback only runs when FFTW3_FOUND is still FALSE.
if (NOT FFTW3_FOUND)
+
+ # Include the helper macro for standard handling of results
include(FindPackageHandleStandardArgs)
+ # Look for the FFTW3 header. Users can help by setting FFTW3_DIR or
+ # by making sure the header is somewhere in the default search paths.
find_path(FFTW3_INCLUDE_DIR
NAMES fftw3.h
HINTS ENV FFTW3_DIR
@@ -34,6 +45,7 @@
PATH_SUFFIXES include
)
+ # Look for the FFTW3 library. Allow FFTW3_DIR to point to its prefix.
find_library(FFTW3_LIBRARY
NAMES fftw3
HINTS ENV FFTW3_DIR
@@ -40,10 +52,14 @@
PATH_SUFFIXES lib
)
+ # Standard handling macro: sets FFTW3_FOUND if the above succeeded
find_package_handle_standard_args(FFTW3
REQUIRED_VARS FFTW3_LIBRARY FFTW3_INCLUDE_DIR
)
+ # If we did find FFTW3, but no imported target exists yet,
+ # create our own IMPORTED target so downstream code can use:
+ # target_link_libraries(myprog PRIVATE FFTW3::fftw3)
if (FFTW3_FOUND AND NOT TARGET FFTW3::fftw3)
add_library(FFTW3::fftw3 UNKNOWN IMPORTED)
set_target_properties(FFTW3::fftw3 PROPERTIES
@@ -52,3 +68,9 @@
)
endif()
endif()
+
+if (FFTW3_FOUND)
+ message(STATUS "Using FFTW3: ${FFTW3_LIBRARY}")
+else()
+ message(STATUS "FFTW3 not found")
+endif()
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <kin...@us...> - 2025-08-28 23:49:13
|
Revision: 7334
http://sourceforge.net/p/teem/code/7334
Author: kindlmann
Date: 2025-08-28 23:49:09 +0000 (Thu, 28 Aug 2025)
Log Message:
-----------
clarified description of how AIR_EXISTS is tested by CMake/TestAIR_EXISTS.c
Modified Paths:
--------------
teem/trunk/src/air/air.h
Modified: teem/trunk/src/air/air.h
===================================================================
--- teem/trunk/src/air/air.h 2025-08-28 19:45:58 UTC (rev 7333)
+++ teem/trunk/src/air/air.h 2025-08-28 23:49:09 UTC (rev 7334)
@@ -758,14 +758,15 @@
** (as arising from !(NaN-NaN) or !(inf-inf)). BTW GLK is unsure why the current macro
** explicitly casts the result of "!" to int, since "!" already produces an int:
** https://en.cppreference.com/w/c/language/operator_logical. A more straight-forward
-** alternative, which avoids float conversion warnings, would be to use "x-x == x-x".
+** alternative, which avoids float conversion warnings, would be to use "x-x == x-x"
**
-** Configuring with CMake uses teem/CMake/testAIR_EXISTS.c to test this macro (but NOTE:
-** it has to be copy-pasted to there since it can't read air.h), which then produces
+** Configuring with CMake uses teem/CMake/TestAIR_EXISTS.c (and tries to compile it the
+** same as the rest of Teem will be compiled) to test this macro (but NOTE: it has to be
+** copy-pasted to there since it can't read air.h), which then produces
** teem-install-dir/include/teem/airExistsConf.h, which #define's AIR_EXISTS_MACRO_FAILS
-** or not, which controls whether AIR_EXISTS uses the clever macro or the more reliable
-** function call airExists. Still, there may be failure modes untested by
-** testAIR_EXISTS.c, and by the tests in air/airSanity().
+** or not, which controls whether AIR_EXISTS here uses the clever macro or the more
+** reliable function call airExists. There may yet be failure modes untested by
+** TestAIR_EXISTS.c, and by the tests in air/airSanity().
*/
/* ---- BEGIN non-NrrdIO */
#if !defined(TEEM_NON_CMAKE)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <kin...@us...> - 2025-08-28 19:46:01
|
Revision: 7333
http://sourceforge.net/p/teem/code/7333
Author: kindlmann
Date: 2025-08-28 19:45:58 +0000 (Thu, 28 Aug 2025)
Log Message:
-----------
TeemV2 GNUmakefile simplification seems to be done (but will have to do more Teem hacking with them to really exercise them)
Modified Paths:
--------------
teem/trunk/src/GNUmakefile
teem/trunk/src/TODO.txt
teem/trunk/src/air/GNUmakefile
teem/trunk/src/alan/GNUmakefile
teem/trunk/src/bane/GNUmakefile
teem/trunk/src/biff/GNUmakefile
teem/trunk/src/bin/GNUmakefile
teem/trunk/src/coil/GNUmakefile
teem/trunk/src/dye/GNUmakefile
teem/trunk/src/echo/GNUmakefile
teem/trunk/src/elf/GNUmakefile
teem/trunk/src/ell/GNUmakefile
teem/trunk/src/gage/GNUmakefile
teem/trunk/src/hest/GNUmakefile
teem/trunk/src/hoover/GNUmakefile
teem/trunk/src/limn/GNUmakefile
teem/trunk/src/make/template.mk
teem/trunk/src/meet/GNUmakefile
teem/trunk/src/mite/GNUmakefile
teem/trunk/src/moss/GNUmakefile
teem/trunk/src/nrrd/GNUmakefile
teem/trunk/src/pull/GNUmakefile
teem/trunk/src/push/GNUmakefile
teem/trunk/src/seek/GNUmakefile
teem/trunk/src/ten/GNUmakefile
teem/trunk/src/tijk/GNUmakefile
teem/trunk/src/unrrdu/GNUmakefile
Modified: teem/trunk/src/GNUmakefile
===================================================================
--- teem/trunk/src/GNUmakefile 2025-08-28 17:29:52 UTC (rev 7332)
+++ teem/trunk/src/GNUmakefile 2025-08-28 19:45:58 UTC (rev 7333)
@@ -169,8 +169,6 @@
HdrPath := $(TeemRoot)/built/include
LibPath := $(TeemRoot)/built/lib
BinPath := $(TeemRoot)/built/bin
-$(foreach dir,$(ObjPath) $(HdrPath) $(HdrPath)/teem $(LibPath) $(BinPath),\
- $(call create.if.missing,$(dir)))
dashI += -I$(HdrPath)
# we still need this for the teem*.h headers (such as teemPng.h)
dashI += -I$(TeemRoot)/include
@@ -194,6 +192,10 @@
llink = $(foreach L,$(call RevOrder,$(1)),-l$(L))
banner = echo -e "\n-------" $(1) "-------" $(1) "-------" $(1) "-------" $(1) "-------\n"
+## name of parent directory that immediately contains us
+## (used in a previous version of lib/GNUmakefile)
+# pardir := $(notdir $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST))))))
+
## NOTE: In all of these, "File" could be singular or plural
## SrcHdrFile(L): paths to all (public and private) headers in souce for lib L
## HdrFile(Ls): paths to all public headers "installed" for lib L in Ls
@@ -300,6 +302,10 @@
#######################################
+## Create missing directories as needed
+$(foreach dir,$(ObjPath) $(HdrPath) $(HdrPath)/teem $(LibPath) $(BinPath),\
+ $(call create.if.missing,$(dir)))
+
## Read in the makefiles for all the libraries, and the bins. Run-away recursive
## inclusion is prevented by the Top.Included and other guards. Note: "include" is a
## directive, not a function, which would seem to eliminate the possibility of iterating
Modified: teem/trunk/src/TODO.txt
===================================================================
--- teem/trunk/src/TODO.txt 2025-08-28 17:29:52 UTC (rev 7332)
+++ teem/trunk/src/TODO.txt 2025-08-28 19:45:58 UTC (rev 7333)
@@ -31,11 +31,6 @@
Teem can't use "meet", but there should at least be consistent naming
conventions.
-Consider doing away with "experimental" libraries and applications:
-its annoying to have two totally different kinds of Teem installs,
-especially when it means that it would mean two different python
-wrappings.
-
Consider extending const-correctness of function input not just to
pointers, but to all values as well.
@@ -244,7 +239,6 @@
** should be re-evaluated.
for cmake:
- - build pv on windows
- see if wild-card expansion works as expected on windows
- make cmd-line utilities link with static libs
@@ -297,26 +291,3 @@
fout Eurovis 05: High-Quality Rendering of Compressed Volume Data Formats
callahan TVCG May/June 05: Hardware-Assisted Visibility Sorting for Unstructured Volume Rendering
jorik blaas vis05 fiber paper
-
-Following are less of an issue now that CMake is in use ...
-
-make system really botched: change the size of the tenFiberContext
-(added a field or two), do a make ten/install,
-then cd ../push; rm -f test/pusher
-
-make install; make; and
-you'll STILL get memory errors due to seeing library/object files
-which use the older context size. Do a top-level make clobber, and
-then things work. This is crap. I think the problem is that
-development object files of push were not recompiled when they should
-have been- doing a make clobber; make in push solved the problem...
-Examples of this:
-- change limn.h, cd ../ten, make, nothing to be done WRONG
-- make a change in nrrdEnums.h, which unrrdu/project.c
- uses directly. recompile, and nrrd gets compiled, but not unrrdu,
- so unu doesn't get updated correctly!
-- add a macro in ELL, make install in ell,
- cd limn, make ../limn/test/tiso, doesn't see new header
- and fails at link-time with "<new macro> symbol undefined"
-- want seperate directories for static and shared libraries
-- want bin/dev and bin/install targets
Modified: teem/trunk/src/air/GNUmakefile
===================================================================
--- teem/trunk/src/air/GNUmakefile 2025-08-28 17:29:52 UTC (rev 7332)
+++ teem/trunk/src/air/GNUmakefile 2025-08-28 19:45:58 UTC (rev 7333)
@@ -17,13 +17,16 @@
# along with this library; if not, see <https://www.gnu.org/licenses/>.
#
-# boilerplate: start include guard based on containing dir, then
-# set library name L, define default targets, include top-level GNUmakefile
-pardir := $(notdir $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST))))))
-ifndef $(pardir).Included
-######## HERE is where L is set to library name
-L := $(pardir)
-$(L).Included := yes
+#### Library name
+####
+####
+L := air
+####
+####
+####
+
+# boilerplate: set top-level paths and targets if not set, include top-level GNUmakefile,
+# and guard reading of per-library variables and (via template.mk) rules
TeemRoot ?= ../..
TeemSrc ?= ..
ifndef DefaultTargets
@@ -32,8 +35,9 @@
test : $(L).test
clean : $(L).clean
endif # ifndef DefaultTargets
-.PHONY: $(TeemSrc)/GNUmakefile
include $(TeemSrc)/GNUmakefile
+ifndef $(L).Included
+$(L).Included := yes
#### Describe library L here
####
@@ -49,7 +53,7 @@
####
####
-# boilerplate: declare rules for L via template, finish include guard
-.PHONY: $(TeemSrc)/make/template.mk
+# boilerplate: enable "make test/T", template lib L rules, finish include guard
+$(foreach T,$($(L).Test),$(eval test/$(T) : ../$(L)/test/$(T)))
include $(TeemSrc)/make/template.mk
endif # ifndef $(L).Included
Modified: teem/trunk/src/alan/GNUmakefile
===================================================================
--- teem/trunk/src/alan/GNUmakefile 2025-08-28 17:29:52 UTC (rev 7332)
+++ teem/trunk/src/alan/GNUmakefile 2025-08-28 19:45:58 UTC (rev 7333)
@@ -17,13 +17,16 @@
# along with this library; if not, see <https://www.gnu.org/licenses/>.
#
-# boilerplate: start include guard based on containing dir, then
-# set library name L, define default targets, include top-level GNUmakefile
-pardir := $(notdir $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST))))))
-ifndef $(pardir).Included
-######## HERE is where L is set to library name
-L := $(pardir)
-$(L).Included := yes
+#### Library name
+####
+####
+L := alan
+####
+####
+####
+
+# boilerplate: set top-level paths and targets if not set, include top-level GNUmakefile,
+# and guard reading of per-library variables and (via template.mk) rules
TeemRoot ?= ../..
TeemSrc ?= ..
ifndef DefaultTargets
@@ -32,8 +35,9 @@
test : $(L).test
clean : $(L).clean
endif # ifndef DefaultTargets
-.PHONY: $(TeemSrc)/GNUmakefile
include $(TeemSrc)/GNUmakefile
+ifndef $(L).Included
+$(L).Included := yes
#### Describe library L here
####
@@ -47,7 +51,7 @@
####
####
-# boilerplate: declare rules for L via template, finish include guard
-.PHONY: $(TeemSrc)/make/template.mk
+# boilerplate: enable "make test/T", template lib L rules, finish include guard
+$(foreach T,$($(L).Test),$(eval test/$(T) : ../$(L)/test/$(T)))
include $(TeemSrc)/make/template.mk
endif # ifndef $(L).Included
Modified: teem/trunk/src/bane/GNUmakefile
===================================================================
--- teem/trunk/src/bane/GNUmakefile 2025-08-28 17:29:52 UTC (rev 7332)
+++ teem/trunk/src/bane/GNUmakefile 2025-08-28 19:45:58 UTC (rev 7333)
@@ -17,13 +17,16 @@
# along with this library; if not, see <https://www.gnu.org/licenses/>.
#
-# boilerplate: start include guard based on containing dir, then
-# set library name L, define default targets, include top-level GNUmakefile
-pardir := $(notdir $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST))))))
-ifndef $(pardir).Included
-######## HERE is where L is set to library name
-L := $(pardir)
-$(L).Included := yes
+#### Library name
+####
+####
+L := bane
+####
+####
+####
+
+# boilerplate: set top-level paths and targets if not set, include top-level GNUmakefile,
+# and guard reading of per-library variables and (via template.mk) rules
TeemRoot ?= ../..
TeemSrc ?= ..
ifndef DefaultTargets
@@ -32,8 +35,9 @@
test : $(L).test
clean : $(L).clean
endif # ifndef DefaultTargets
-.PHONY: $(TeemSrc)/GNUmakefile
include $(TeemSrc)/GNUmakefile
+ifndef $(L).Included
+$(L).Included := yes
#### Describe library L here
####
@@ -51,7 +55,7 @@
####
####
-# boilerplate: declare rules for L via template, finish include guard
-.PHONY: $(TeemSrc)/make/template.mk
+# boilerplate: enable "make test/T", template lib L rules, finish include guard
+$(foreach T,$($(L).Test),$(eval test/$(T) : ../$(L)/test/$(T)))
include $(TeemSrc)/make/template.mk
endif # ifndef $(L).Included
Modified: teem/trunk/src/biff/GNUmakefile
===================================================================
--- teem/trunk/src/biff/GNUmakefile 2025-08-28 17:29:52 UTC (rev 7332)
+++ teem/trunk/src/biff/GNUmakefile 2025-08-28 19:45:58 UTC (rev 7333)
@@ -17,13 +17,16 @@
# along with this library; if not, see <https://www.gnu.org/licenses/>.
#
-# boilerplate: start include guard based on containing dir, then
-# set library name L, define default targets, include top-level GNUmakefile
-pardir := $(notdir $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST))))))
-ifndef $(pardir).Included
-######## HERE is where L is set to library name
-L := $(pardir)
-$(L).Included := yes
+#### Library name
+####
+####
+L := biff
+####
+####
+####
+
+# boilerplate: set top-level paths and targets if not set, include top-level GNUmakefile,
+# and guard reading of per-library variables and (via template.mk) rules
TeemRoot ?= ../..
TeemSrc ?= ..
ifndef DefaultTargets
@@ -32,8 +35,9 @@
test : $(L).test
clean : $(L).clean
endif # ifndef DefaultTargets
-.PHONY: $(TeemSrc)/GNUmakefile
include $(TeemSrc)/GNUmakefile
+ifndef $(L).Included
+$(L).Included := yes
#### Describe library L here
####
@@ -47,7 +51,7 @@
####
####
-# boilerplate: declare rules for L via template, finish include guard
-.PHONY: $(TeemSrc)/make/template.mk
+# boilerplate: enable "make test/T", template lib L rules, finish include guard
+$(foreach T,$($(L).Test),$(eval test/$(T) : ../$(L)/test/$(T)))
include $(TeemSrc)/make/template.mk
endif # ifndef $(L).Included
Modified: teem/trunk/src/bin/GNUmakefile
===================================================================
--- teem/trunk/src/bin/GNUmakefile 2025-08-28 17:29:52 UTC (rev 7332)
+++ teem/trunk/src/bin/GNUmakefile 2025-08-28 19:45:58 UTC (rev 7333)
@@ -18,7 +18,6 @@
#
# boiler-ish-plate: default targets, include, and guarding per-"lib" rules
-ifndef bin.Included
TeemRoot ?= ../..
TeemSrc ?= ..
ifndef DefaultTargets
@@ -26,8 +25,9 @@
bild : bin.bild
clean : bin.clean
endif
-.PHONY: $(TeemSrc)/GNUmakefile
include $(TeemSrc)/GNUmakefile
+ifndef bin.Included
+bin.Included := yes
#### By the ordering and guarding of includes, this should ALWAYS be the last "library"
#### makefile to be parsed, regardless of the directory in which make started.
Modified: teem/trunk/src/coil/GNUmakefile
===================================================================
--- teem/trunk/src/coil/GNUmakefile 2025-08-28 17:29:52 UTC (rev 7332)
+++ teem/trunk/src/coil/GNUmakefile 2025-08-28 19:45:58 UTC (rev 7333)
@@ -17,13 +17,16 @@
# along with this library; if not, see <https://www.gnu.org/licenses/>.
#
-# boilerplate: start include guard based on containing dir, then
-# set library name L, define default targets, include top-level GNUmakefile
-pardir := $(notdir $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST))))))
-ifndef $(pardir).Included
-######## HERE is where L is set to library name
-L := $(pardir)
-$(L).Included := yes
+#### Library name
+####
+####
+L := coil
+####
+####
+####
+
+# boilerplate: set top-level paths and targets if not set, include top-level GNUmakefile,
+# and guard reading of per-library variables and (via template.mk) rules
TeemRoot ?= ../..
TeemSrc ?= ..
ifndef DefaultTargets
@@ -32,8 +35,9 @@
test : $(L).test
clean : $(L).clean
endif # ifndef DefaultTargets
-.PHONY: $(TeemSrc)/GNUmakefile
include $(TeemSrc)/GNUmakefile
+ifndef $(L).Included
+$(L).Included := yes
#### Describe library L here
####
@@ -49,7 +53,7 @@
####
####
-# boilerplate: declare rules for L via template, finish include guard
-.PHONY: $(TeemSrc)/make/template.mk
+# boilerplate: enable "make test/T", template lib L rules, finish include guard
+$(foreach T,$($(L).Test),$(eval test/$(T) : ../$(L)/test/$(T)))
include $(TeemSrc)/make/template.mk
endif # ifndef $(L).Included
Modified: teem/trunk/src/dye/GNUmakefile
===================================================================
--- teem/trunk/src/dye/GNUmakefile 2025-08-28 17:29:52 UTC (rev 7332)
+++ teem/trunk/src/dye/GNUmakefile 2025-08-28 19:45:58 UTC (rev 7333)
@@ -17,13 +17,16 @@
# along with this library; if not, see <https://www.gnu.org/licenses/>.
#
-# boilerplate: start include guard based on containing dir, then
-# set library name L, define default targets, include top-level GNUmakefile
-pardir := $(notdir $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST))))))
-ifndef $(pardir).Included
-######## HERE is where L is set to library name
-L := $(pardir)
-$(L).Included := yes
+#### Library name
+####
+####
+L := dye
+####
+####
+####
+
+# boilerplate: set top-level paths and targets if not set, include top-level GNUmakefile,
+# and guard reading of per-library variables and (via template.mk) rules
TeemRoot ?= ../..
TeemSrc ?= ..
ifndef DefaultTargets
@@ -32,8 +35,9 @@
test : $(L).test
clean : $(L).clean
endif # ifndef DefaultTargets
-.PHONY: $(TeemSrc)/GNUmakefile
include $(TeemSrc)/GNUmakefile
+ifndef $(L).Included
+$(L).Included := yes
#### Describe library L here
####
@@ -48,7 +52,7 @@
####
####
-# boilerplate: declare rules for L via template, finish include guard
-.PHONY: $(TeemSrc)/make/template.mk
+# boilerplate: enable "make test/T", template lib L rules, finish include guard
+$(foreach T,$($(L).Test),$(eval test/$(T) : ../$(L)/test/$(T)))
include $(TeemSrc)/make/template.mk
endif # ifndef $(L).Included
Modified: teem/trunk/src/echo/GNUmakefile
===================================================================
--- teem/trunk/src/echo/GNUmakefile 2025-08-28 17:29:52 UTC (rev 7332)
+++ teem/trunk/src/echo/GNUmakefile 2025-08-28 19:45:58 UTC (rev 7333)
@@ -17,13 +17,16 @@
# along with this library; if not, see <https://www.gnu.org/licenses/>.
#
-# boilerplate: start include guard based on containing dir, then
-# set library name L, define default targets, include top-level GNUmakefile
-pardir := $(notdir $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST))))))
-ifndef $(pardir).Included
-######## HERE is where L is set to library name
-L := $(pardir)
-$(L).Included := yes
+#### Library name
+####
+####
+L := echo
+####
+####
+####
+
+# boilerplate: set top-level paths and targets if not set, include top-level GNUmakefile,
+# and guard reading of per-library variables and (via template.mk) rules
TeemRoot ?= ../..
TeemSrc ?= ..
ifndef DefaultTargets
@@ -32,8 +35,9 @@
test : $(L).test
clean : $(L).clean
endif # ifndef DefaultTargets
-.PHONY: $(TeemSrc)/GNUmakefile
include $(TeemSrc)/GNUmakefile
+ifndef $(L).Included
+$(L).Included := yes
#### Describe library L here
####
@@ -48,7 +52,7 @@
####
####
-# boilerplate: declare rules for L via template, finish include guard
-.PHONY: $(TeemSrc)/make/template.mk
+# boilerplate: enable "make test/T", template lib L rules, finish include guard
+$(foreach T,$($(L).Test),$(eval test/$(T) : ../$(L)/test/$(T)))
include $(TeemSrc)/make/template.mk
endif # ifndef $(L).Included
Modified: teem/trunk/src/elf/GNUmakefile
===================================================================
--- teem/trunk/src/elf/GNUmakefile 2025-08-28 17:29:52 UTC (rev 7332)
+++ teem/trunk/src/elf/GNUmakefile 2025-08-28 19:45:58 UTC (rev 7333)
@@ -17,13 +17,16 @@
# along with this library; if not, see <https://www.gnu.org/licenses/>.
#
-# boilerplate: start include guard based on containing dir, then
-# set library name L, define default targets, include top-level GNUmakefile
-pardir := $(notdir $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST))))))
-ifndef $(pardir).Included
-######## HERE is where L is set to library name
-L := $(pardir)
-$(L).Included := yes
+#### Library name
+####
+####
+L := elf
+####
+####
+####
+
+# boilerplate: set top-level paths and targets if not set, include top-level GNUmakefile,
+# and guard reading of per-library variables and (via template.mk) rules
TeemRoot ?= ../..
TeemSrc ?= ..
ifndef DefaultTargets
@@ -32,8 +35,9 @@
test : $(L).test
clean : $(L).clean
endif # ifndef DefaultTargets
-.PHONY: $(TeemSrc)/GNUmakefile
include $(TeemSrc)/GNUmakefile
+ifndef $(L).Included
+$(L).Included := yes
#### Describe library L here
####
@@ -47,7 +51,7 @@
####
####
-# boilerplate: declare rules for L via template, finish include guard
-.PHONY: $(TeemSrc)/make/template.mk
+# boilerplate: enable "make test/T", template lib L rules, finish include guard
+$(foreach T,$($(L).Test),$(eval test/$(T) : ../$(L)/test/$(T)))
include $(TeemSrc)/make/template.mk
endif # ifndef $(L).Included
Modified: teem/trunk/src/ell/GNUmakefile
===================================================================
--- teem/trunk/src/ell/GNUmakefile 2025-08-28 17:29:52 UTC (rev 7332)
+++ teem/trunk/src/ell/GNUmakefile 2025-08-28 19:45:58 UTC (rev 7333)
@@ -17,13 +17,16 @@
# along with this library; if not, see <https://www.gnu.org/licenses/>.
#
-# boilerplate: start include guard based on containing dir, then
-# set library name L, define default targets, include top-level GNUmakefile
-pardir := $(notdir $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST))))))
-ifndef $(pardir).Included
-######## HERE is where L is set to library name
-L := $(pardir)
-$(L).Included := yes
+#### Library name
+####
+####
+L := ell
+####
+####
+####
+
+# boilerplate: set top-level paths and targets if not set, include top-level GNUmakefile,
+# and guard reading of per-library variables and (via template.mk) rules
TeemRoot ?= ../..
TeemSrc ?= ..
ifndef DefaultTargets
@@ -32,8 +35,9 @@
test : $(L).test
clean : $(L).clean
endif # ifndef DefaultTargets
-.PHONY: $(TeemSrc)/GNUmakefile
include $(TeemSrc)/GNUmakefile
+ifndef $(L).Included
+$(L).Included := yes
#### Describe library L here
####
@@ -47,7 +51,7 @@
####
####
-# boilerplate: declare rules for L via template, finish include guard
-.PHONY: $(TeemSrc)/make/template.mk
+# boilerplate: enable "make test/T", template lib L rules, finish include guard
+$(foreach T,$($(L).Test),$(eval test/$(T) : ../$(L)/test/$(T)))
include $(TeemSrc)/make/template.mk
endif # ifndef $(L).Included
Modified: teem/trunk/src/gage/GNUmakefile
===================================================================
--- teem/trunk/src/gage/GNUmakefile 2025-08-28 17:29:52 UTC (rev 7332)
+++ teem/trunk/src/gage/GNUmakefile 2025-08-28 19:45:58 UTC (rev 7333)
@@ -17,13 +17,16 @@
# along with this library; if not, see <https://www.gnu.org/licenses/>.
#
-# boilerplate: start include guard based on containing dir, then
-# set library name L, define default targets, include top-level GNUmakefile
-pardir := $(notdir $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST))))))
-ifndef $(pardir).Included
-######## HERE is where L is set to library name
-L := $(pardir)
-$(L).Included := yes
+#### Library name
+####
+####
+L := gage
+####
+####
+####
+
+# boilerplate: set top-level paths and targets if not set, include top-level GNUmakefile,
+# and guard reading of per-library variables and (via template.mk) rules
TeemRoot ?= ../..
TeemSrc ?= ..
ifndef DefaultTargets
@@ -32,8 +35,9 @@
test : $(L).test
clean : $(L).clean
endif # ifndef DefaultTargets
-.PHONY: $(TeemSrc)/GNUmakefile
include $(TeemSrc)/GNUmakefile
+ifndef $(L).Included
+$(L).Included := yes
#### Describe library L here
####
@@ -51,7 +55,7 @@
####
####
-# boilerplate: declare rules for L via template, finish include guard
-.PHONY: $(TeemSrc)/make/template.mk
+# boilerplate: enable "make test/T", template lib L rules, finish include guard
+$(foreach T,$($(L).Test),$(eval test/$(T) : ../$(L)/test/$(T)))
include $(TeemSrc)/make/template.mk
endif # ifndef $(L).Included
Modified: teem/trunk/src/hest/GNUmakefile
===================================================================
--- teem/trunk/src/hest/GNUmakefile 2025-08-28 17:29:52 UTC (rev 7332)
+++ teem/trunk/src/hest/GNUmakefile 2025-08-28 19:45:58 UTC (rev 7333)
@@ -17,13 +17,16 @@
# along with this library; if not, see <https://www.gnu.org/licenses/>.
#
-# boilerplate: start include guard based on containing dir, then
-# set library name L, define default targets, include top-level GNUmakefile
-pardir := $(notdir $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST))))))
-ifndef $(pardir).Included
-######## HERE is where L is set to library name
-L := $(pardir)
-$(L).Included := yes
+#### Library name
+####
+####
+L := hest
+####
+####
+####
+
+# boilerplate: set top-level paths and targets if not set, include top-level GNUmakefile,
+# and guard reading of per-library variables and (via template.mk) rules
TeemRoot ?= ../..
TeemSrc ?= ..
ifndef DefaultTargets
@@ -32,8 +35,9 @@
test : $(L).test
clean : $(L).clean
endif # ifndef DefaultTargets
-.PHONY: $(TeemSrc)/GNUmakefile
include $(TeemSrc)/GNUmakefile
+ifndef $(L).Included
+$(L).Included := yes
#### Describe library L here
####
@@ -47,7 +51,7 @@
####
####
-# boilerplate: declare rules for L via template, finish include guard
-.PHONY: $(TeemSrc)/make/template.mk
+# boilerplate: enable "make test/T", template lib L rules, finish include guard
+$(foreach T,$($(L).Test),$(eval test/$(T) : ../$(L)/test/$(T)))
include $(TeemSrc)/make/template.mk
endif # ifndef $(L).Included
Modified: teem/trunk/src/hoover/GNUmakefile
===================================================================
--- teem/trunk/src/hoover/GNUmakefile 2025-08-28 17:29:52 UTC (rev 7332)
+++ teem/trunk/src/hoover/GNUmakefile 2025-08-28 19:45:58 UTC (rev 7333)
@@ -17,13 +17,16 @@
# along with this library; if not, see <https://www.gnu.org/licenses/>.
#
-# boilerplate: start include guard based on containing dir, then
-# set library name L, define default targets, include top-level GNUmakefile
-pardir := $(notdir $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST))))))
-ifndef $(pardir).Included
-######## HERE is where L is set to library name
-L := $(pardir)
-$(L).Included := yes
+#### Library name
+####
+####
+L := hoover
+####
+####
+####
+
+# boilerplate: set top-level paths and targets if not set, include top-level GNUmakefile,
+# and guard reading of per-library variables and (via template.mk) rules
TeemRoot ?= ../..
TeemSrc ?= ..
ifndef DefaultTargets
@@ -32,8 +35,9 @@
test : $(L).test
clean : $(L).clean
endif # ifndef DefaultTargets
-.PHONY: $(TeemSrc)/GNUmakefile
include $(TeemSrc)/GNUmakefile
+ifndef $(L).Included
+$(L).Included := yes
#### Describe library L here
####
@@ -47,7 +51,7 @@
####
####
-# boilerplate: declare rules for L via template, finish include guard
-.PHONY: $(TeemSrc)/make/template.mk
+# boilerplate: enable "make test/T", template lib L rules, finish include guard
+$(foreach T,$($(L).Test),$(eval test/$(T) : ../$(L)/test/$(T)))
include $(TeemSrc)/make/template.mk
endif # ifndef $(L).Included
Modified: teem/trunk/src/limn/GNUmakefile
===================================================================
--- teem/trunk/src/limn/GNUmakefile 2025-08-28 17:29:52 UTC (rev 7332)
+++ teem/trunk/src/limn/GNUmakefile 2025-08-28 19:45:58 UTC (rev 7333)
@@ -17,13 +17,16 @@
# along with this library; if not, see <https://www.gnu.org/licenses/>.
#
-# boilerplate: start include guard based on containing dir, then
-# set library name L, define default targets, include top-level GNUmakefile
-pardir := $(notdir $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST))))))
-ifndef $(pardir).Included
-######## HERE is where L is set to library name
-L := $(pardir)
-$(L).Included := yes
+#### Library name
+####
+####
+L := limn
+####
+####
+####
+
+# boilerplate: set top-level paths and targets if not set, include top-level GNUmakefile,
+# and guard reading of per-library variables and (via template.mk) rules
TeemRoot ?= ../..
TeemSrc ?= ..
ifndef DefaultTargets
@@ -32,8 +35,9 @@
test : $(L).test
clean : $(L).clean
endif # ifndef DefaultTargets
-.PHONY: $(TeemSrc)/GNUmakefile
include $(TeemSrc)/GNUmakefile
+ifndef $(L).Included
+$(L).Included := yes
#### Describe library L here
####
@@ -53,7 +57,7 @@
####
####
-# boilerplate: declare rules for L via template, finish include guard
-.PHONY: $(TeemSrc)/make/template.mk
+# boilerplate: enable "make test/T", template lib L rules, finish include guard
+$(foreach T,$($(L).Test),$(eval test/$(T) : ../$(L)/test/$(T)))
include $(TeemSrc)/make/template.mk
endif # ifndef $(L).Included
Modified: teem/trunk/src/make/template.mk
===================================================================
--- teem/trunk/src/make/template.mk 2025-08-28 17:29:52 UTC (rev 7332)
+++ teem/trunk/src/make/template.mk 2025-08-28 19:45:58 UTC (rev 7333)
@@ -1,4 +1,4 @@
- #
+#
# Teem: Tools to process and visualize scientific data and images
# Copyright (C) 2009--2025 University of Chicago
# Copyright (C) 2005--2008 Gordon Kindlmann
@@ -25,11 +25,14 @@
#### an immediate set by the library GNUmakefile.
####
-## Avoid redundant calls to Need(L) by evaluating and saving this once
+## Avoid redundant expensive calls evaluating and saving these once
##
$(L).Need := $(call Need,$(L))
$(L).MeNeed := $(call MeNeed,$(L))
-#$(warning template(L): $(L).Need = |$($(L).Need)|, $(L).MeNeed = |$($(L).MeNeed)|)
+$(L).MeNeedFile := $(foreach lib,$($(L).MeNeed),$(call LibFile,$(lib)) $(call HdrFile,$(lib)))
+#$(warning template($(L)): $(L).Need = |$($(L).Need)|)
+#$(warning template($(L)): $(L).MeNeed = |$($(L).MeNeed)|)
+#$(warning template($(L)): $(L).MeNeedFile = |$($(L).MeNeedFile)|)
## In a rule, the contexts of the target and the prerequisite are immediate, the contexts
## of the commands are deferred; there is no getting around this. Thus, if the commands
@@ -37,12 +40,12 @@
## is the one in effect with WHEN THE COMMAND IS RUN, not the one when the rule was read
## by make. Not useful.
##
-## For all the "entry-point" targets, we enstate a pattern-specific immediate variable
-## value _L. This bridges the immediate and deferred stages by remembering the value of
-## L at the time the rule was read, so that it can be used in the deferred context of the
-## rule's commands when run. Fortunately, the sementics of pattern-specific variables
-## mean that the value of _L will be set the same when satisfying all prerequisites of
-## $(L).%, which is exactly what we want.
+## For all the phony entry-point targets, we enstate a pattern-specific immediate
+## variable value _L. This bridges the immediate and deferred stages by remembering the
+## value of L at the time the rule was read, so that it can be used in the deferred
+## context of the rule's commands when run. Fortunately, the sementics of
+## pattern-specific variables mean that the value of _L will be set the same when
+## satisfying all prerequisites of $(L).%, which is exactly what we want.
##
$(L).% : _L := $(L)
@@ -51,9 +54,6 @@
## subsume the definition above, but it doesn't hurt to have both.
##
$(call LibFile,$(L)) : _L := $(L)
-
-## not sure why these are needed- version 3.78.1 on a solaris box definately needed the
-## last one, while others didn't
$(call HdrFile,$(L)) : _L := $(L)
$(call ObjFile,$(L)) : _L := $(L)
$(call TestFile,$(L)): _L := $(L)
@@ -60,18 +60,20 @@
## Here are the actual rules for building!
-## $(L).bild depends on $(P).bild for each pre-req libraries P,
-## on and $(L)'s library and header files in their built location
+## $(L).bild depends on the library and header files, in their built location, for me (L)
+## and for everything I (transitively) depend on. Rules below will describe how my
+## library and header files are created; prior libraries running this template.mk will do
+## the same for them.
##
-#$(warning [L.bild] $(L).bild : $(foreach P,$($(L).Need),$(P).bild) $(call LibFile,$(L)) $(call HdrFile,$(L)))
-$(L).bild : $(foreach P,$($(L).Need),$(P).bild) $(call LibFile,$(L)) $(call HdrFile,$(L))
+#$(warning $(L).bild : $($(L).MeNeedFile))
+$(L).bild : $($(L).MeNeedFile)
-## $(L).test depends first building L (and everything that depends on),
-## and then specifically on all the per-lib test programs
-#$(warning $(L).test : $(L).bild)
-$(L).test : $(L).bild
+## $(L).test depends on all the per-lib test programs
+## which in turn depend on first building L (and everything that it depends on),
#$(warning $(L).test : $(call TestFile,$(L)))
$(L).test : $(call TestFile,$(L))
+#$(warning $(call TestFile,$(L)) : $($(L).MeNeedFile)
+$(call TestFile,$(L)) : $($(L).MeNeedFile)
## $(L).clean undoes $(L).bild and $(L).test
##
@@ -81,18 +83,16 @@
$(RM) -r $(foreach bin,$(call TestFile,$(_L)),$(bin)$(LITTER))
endif
-# HEY still have to figure this out $(if $(LITTER),$(RM) $(TEEM_ROOT)/src/$(_L)/$(LITTER))
-
-## The objects of a lib depend on the headers of the libraries we depend on,
-## and on our own headers.
+## The objects of a lib depend on the headers of the libraries we
+## depend on (both directly and indirectly, or else ABI mismatches,
+## no?), and on our own headers.
##
#$(warning [ObjFile(L)] $(call ObjFile,$(L)) : ...)
-#$(warning [ObjFile(L)] ... : $(call HdrFile,$($(L).Depends)) $(call SrcHdrFile,$(L)))
-$(call ObjFile,$(L)) : $(call HdrFile,$($(L).Depends)) $(call SrcHdrFile,$(L))
+#$(warning [ObjFile(L)] ... : $(call HdrFile,$($(L).Need)) $(call SrcHdrFile,$(L)))
+$(call ObjFile,$(L)) : $(call HdrFile,$($(L).Need)) $(call SrcHdrFile,$(L))
## (L).maybebanner(obj) returns "echo ..." to show a library banner progress indicator,
-## but only if obj is the first object in $(L).OBJS. This mimics the behavior under the
-## old recursive teem makefile.
+## but only if obj is the first object in $(L).OBJS.
##
$(L).maybebanner = $(if $(filter $(notdir $(1:.c=.o)),\
$(word 1,$($(_L).Obj))),\
Modified: teem/trunk/src/meet/GNUmakefile
===================================================================
--- teem/trunk/src/meet/GNUmakefile 2025-08-28 17:29:52 UTC (rev 7332)
+++ teem/trunk/src/meet/GNUmakefile 2025-08-28 19:45:58 UTC (rev 7333)
@@ -17,13 +17,16 @@
# along with this library; if not, see <https://www.gnu.org/licenses/>.
#
-# boilerplate: start include guard based on containing dir, then
-# set library name L, define default targets, include top-level GNUmakefile
-pardir := $(notdir $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST))))))
-ifndef $(pardir).Included
-######## HERE is where L is set to library name
-L := $(pardir)
-$(L).Included := yes
+#### Library name
+####
+####
+L := meet
+####
+####
+####
+
+# boilerplate: set top-level paths and targets if not set, include top-level GNUmakefile,
+# and guard reading of per-library variables and (via template.mk) rules
TeemRoot ?= ../..
TeemSrc ?= ..
ifndef DefaultTargets
@@ -32,8 +35,9 @@
test : $(L).test
clean : $(L).clean
endif # ifndef DefaultTargets
-.PHONY: $(TeemSrc)/GNUmakefile
include $(TeemSrc)/GNUmakefile
+ifndef $(L).Included
+$(L).Included := yes
#### Describe library L here
####
@@ -48,7 +52,7 @@
####
####
-# boilerplate: declare rules for L via template, finish include guard
-.PHONY: $(TeemSrc)/make/template.mk
+# boilerplate: enable "make test/T", template lib L rules, finish include guard
+$(foreach T,$($(L).Test),$(eval test/$(T) : ../$(L)/test/$(T)))
include $(TeemSrc)/make/template.mk
endif # ifndef $(L).Included
Modified: teem/trunk/src/mite/GNUmakefile
===================================================================
--- teem/trunk/src/mite/GNUmakefile 2025-08-28 17:29:52 UTC (rev 7332)
+++ teem/trunk/src/mite/GNUmakefile 2025-08-28 19:45:58 UTC (rev 7333)
@@ -17,13 +17,16 @@
# along with this library; if not, see <https://www.gnu.org/licenses/>.
#
-# boilerplate: start include guard based on containing dir, then
-# set library name L, define default targets, include top-level GNUmakefile
-pardir := $(notdir $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST))))))
-ifndef $(pardir).Included
-######## HERE is where L is set to library name
-L := $(pardir)
-$(L).Included := yes
+#### Library name
+####
+####
+L := mite
+####
+####
+####
+
+# boilerplate: set top-level paths and targets if not set, include top-level GNUmakefile,
+# and guard reading of per-library variables and (via template.mk) rules
TeemRoot ?= ../..
TeemSrc ?= ..
ifndef DefaultTargets
@@ -32,8 +35,9 @@
test : $(L).test
clean : $(L).clean
endif # ifndef DefaultTargets
-.PHONY: $(TeemSrc)/GNUmakefile
include $(TeemSrc)/GNUmakefile
+ifndef $(L).Included
+$(L).Included := yes
#### Describe library L here
####
@@ -49,7 +53,7 @@
####
####
-# boilerplate: declare rules for L via template, finish include guard
-.PHONY: $(TeemSrc)/make/template.mk
+# boilerplate: enable "make test/T", template lib L rules, finish include guard
+$(foreach T,$($(L).Test),$(eval test/$(T) : ../$(L)/test/$(T)))
include $(TeemSrc)/make/template.mk
endif # ifndef $(L).Included
Modified: teem/trunk/src/moss/GNUmakefile
===================================================================
--- teem/trunk/src/moss/GNUmakefile 2025-08-28 17:29:52 UTC (rev 7332)
+++ teem/trunk/src/moss/GNUmakefile 2025-08-28 19:45:58 UTC (rev 7333)
@@ -17,13 +17,16 @@
# along with this library; if not, see <https://www.gnu.org/licenses/>.
#
-# boilerplate: start include guard based on containing dir, then
-# set library name L, define default targets, include top-level GNUmakefile
-pardir := $(notdir $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST))))))
-ifndef $(pardir).Included
-######## HERE is where L is set to library name
-L := $(pardir)
-$(L).Included := yes
+#### Library name
+####
+####
+L := moss
+####
+####
+####
+
+# boilerplate: set top-level paths and targets if not set, include top-level GNUmakefile,
+# and guard reading of per-library variables and (via template.mk) rules
TeemRoot ?= ../..
TeemSrc ?= ..
ifndef DefaultTargets
@@ -32,8 +35,9 @@
test : $(L).test
clean : $(L).clean
endif # ifndef DefaultTargets
-.PHONY: $(TeemSrc)/GNUmakefile
include $(TeemSrc)/GNUmakefile
+ifndef $(L).Included
+$(L).Included := yes
#### Describe library L here
####
@@ -47,7 +51,7 @@
####
####
-# boilerplate: declare rules for L via template, finish include guard
-.PHONY: $(TeemSrc)/make/template.mk
+# boilerplate: enable "make test/T", template lib L rules, finish include guard
+$(foreach T,$($(L).Test),$(eval test/$(T) : ../$(L)/test/$(T)))
include $(TeemSrc)/make/template.mk
endif # ifndef $(L).Included
Modified: teem/trunk/src/nrrd/GNUmakefile
===================================================================
--- teem/trunk/src/nrrd/GNUmakefile 2025-08-28 17:29:52 UTC (rev 7332)
+++ teem/trunk/src/nrrd/GNUmakefile 2025-08-28 19:45:58 UTC (rev 7333)
@@ -17,13 +17,16 @@
# along with this library; if not, see <https://www.gnu.org/licenses/>.
#
-# boilerplate: start include guard based on containing dir, then
-# set library name L, define default targets, include top-level GNUmakefile
-pardir := $(notdir $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST))))))
-ifndef $(pardir).Included
-######## HERE is where L is set to library name
-L := $(pardir)
-$(L).Included := yes
+#### Library name
+####
+####
+L := nrrd
+####
+####
+####
+
+# boilerplate: set top-level paths and targets if not set, include top-level GNUmakefile,
+# and guard reading of per-library variables and (via template.mk) rules
TeemRoot ?= ../..
TeemSrc ?= ..
ifndef DefaultTargets
@@ -32,8 +35,9 @@
test : $(L).test
clean : $(L).clean
endif # ifndef DefaultTargets
-.PHONY: $(TeemSrc)/GNUmakefile
include $(TeemSrc)/GNUmakefile
+ifndef $(L).Included
+$(L).Included := yes
#### Describe library L here
####
@@ -63,7 +67,7 @@
####
####
-# boilerplate: declare rules for L via template, finish include guard
-.PHONY: $(TeemSrc)/make/template.mk
+# boilerplate: enable "make test/T", template lib L rules, finish include guard
+$(foreach T,$($(L).Test),$(eval test/$(T) : ../$(L)/test/$(T)))
include $(TeemSrc)/make/template.mk
endif # ifndef $(L).Included
Modified: teem/trunk/src/pull/GNUmakefile
===================================================================
--- teem/trunk/src/pull/GNUmakefile 2025-08-28 17:29:52 UTC (rev 7332)
+++ teem/trunk/src/pull/GNUmakefile 2025-08-28 19:45:58 UTC (rev 7333)
@@ -17,13 +17,16 @@
# along with this library; if not, see <https://www.gnu.org/licenses/>.
#
-# boilerplate: start include guard based on containing dir, then
-# set library name L, define default targets, include top-level GNUmakefile
-pardir := $(notdir $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST))))))
-ifndef $(pardir).Included
-######## HERE is where L is set to library name
-L := $(pardir)
-$(L).Included := yes
+#### Library name
+####
+####
+L := pull
+####
+####
+####
+
+# boilerplate: set top-level paths and targets if not set, include top-level GNUmakefile,
+# and guard reading of per-library variables and (via template.mk) rules
TeemRoot ?= ../..
TeemSrc ?= ..
ifndef DefaultTargets
@@ -32,8 +35,9 @@
test : $(L).test
clean : $(L).clean
endif # ifndef DefaultTargets
-.PHONY: $(TeemSrc)/GNUmakefile
include $(TeemSrc)/GNUmakefile
+ifndef $(L).Included
+$(L).Included := yes
#### Describe library L here
####
@@ -49,7 +53,7 @@
####
####
-# boilerplate: declare rules for L via template, finish include guard
-.PHONY: $(TeemSrc)/make/template.mk
+# boilerplate: enable "make test/T", template lib L rules, finish include guard
+$(foreach T,$($(L).Test),$(eval test/$(T) : ../$(L)/test/$(T)))
include $(TeemSrc)/make/template.mk
endif # ifndef $(L).Included
Modified: teem/trunk/src/push/GNUmakefile
===================================================================
--- teem/trunk/src/push/GNUmakefile 2025-08-28 17:29:52 UTC (rev 7332)
+++ teem/trunk/src/push/GNUmakefile 2025-08-28 19:45:58 UTC (rev 7333)
@@ -17,13 +17,16 @@
# along with this library; if not, see <https://www.gnu.org/licenses/>.
#
-# boilerplate: start include guard based on containing dir, then
-# set library name L, define default targets, include top-level GNUmakefile
-pardir := $(notdir $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST))))))
-ifndef $(pardir).Included
-######## HERE is where L is set to library name
-L := $(pardir)
-$(L).Included := yes
+#### Library name
+####
+####
+L := push
+####
+####
+####
+
+# boilerplate: set top-level paths and targets if not set, include top-level GNUmakefile,
+# and guard reading of per-library variables and (via template.mk) rules
TeemRoot ?= ../..
TeemSrc ?= ..
ifndef DefaultTargets
@@ -32,8 +35,9 @@
test : $(L).test
clean : $(L).clean
endif # ifndef DefaultTargets
-.PHONY: $(TeemSrc)/GNUmakefile
include $(TeemSrc)/GNUmakefile
+ifndef $(L).Included
+$(L).Included := yes
#### Describe library L here
####
@@ -48,7 +52,7 @@
####
####
-# boilerplate: declare rules for L via template, finish include guard
-.PHONY: $(TeemSrc)/make/template.mk
+# boilerplate: enable "make test/T", template lib L rules, finish include guard
+$(foreach T,$($(L).Test),$(eval test/$(T) : ../$(L)/test/$(T)))
include $(TeemSrc)/make/template.mk
endif # ifndef $(L).Included
Modified: teem/trunk/src/seek/GNUmakefile
===================================================================
--- teem/trunk/src/seek/GNUmakefile 2025-08-28 17:29:52 UTC (rev 7332)
+++ teem/trunk/src/seek/GNUmakefile 2025-08-28 19:45:58 UTC (rev 7333)
@@ -17,13 +17,16 @@
# along with this library; if not, see <https://www.gnu.org/licenses/>.
#
-# boilerplate: start include guard based on containing dir, then
-# set library name L, define default targets, include top-level GNUmakefile
-pardir := $(notdir $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST))))))
-ifndef $(pardir).Included
-######## HERE is where L is set to library name
-L := $(pardir)
-$(L).Included := yes
+#### Library name
+####
+####
+L := seek
+####
+####
+####
+
+# boilerplate: set top-level paths and targets if not set, include top-level GNUmakefile,
+# and guard reading of per-library variables and (via template.mk) rules
TeemRoot ?= ../..
TeemSrc ?= ..
ifndef DefaultTargets
@@ -32,8 +35,9 @@
test : $(L).test
clean : $(L).clean
endif # ifndef DefaultTargets
-.PHONY: $(TeemSrc)/GNUmakefile
include $(TeemSrc)/GNUmakefile
+ifndef $(L).Included
+$(L).Included := yes
#### Describe library L here
####
@@ -48,7 +52,7 @@
####
####
-# boilerplate: declare rules for L via template, finish include guard
-.PHONY: $(TeemSrc)/make/template.mk
+# boilerplate: enable "make test/T", template lib L rules, finish include guard
+$(foreach T,$($(L).Test),$(eval test/$(T) : ../$(L)/test/$(T)))
include $(TeemSrc)/make/template.mk
endif # ifndef $(L).Included
Modified: teem/trunk/src/ten/GNUmakefile
===================================================================
--- teem/trunk/src/ten/GNUmakefile 2025-08-28 17:29:52 UTC (rev 7332)
+++ teem/trunk/src/ten/GNUmakefile 2025-08-28 19:45:58 UTC (rev 7333)
@@ -17,13 +17,16 @@
# along with this library; if not, see <https://www.gnu.org/licenses/>.
#
-# boilerplate: start include guard based on containing dir, then
-# set library name L, define default targets, include top-level GNUmakefile
-pardir := $(notdir $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST))))))
-ifndef $(pardir).Included
-######## HERE is where L is set to library name
-L := $(pardir)
-$(L).Included := yes
+#### Library name
+####
+####
+L := ten
+####
+####
+####
+
+# boilerplate: set top-level paths and targets if not set, include top-level GNUmakefile,
+# and guard reading of per-library variables and (via template.mk) rules
TeemRoot ?= ../..
TeemSrc ?= ..
ifndef DefaultTargets
@@ -32,8 +35,9 @@
test : $(L).test
clean : $(L).clean
endif # ifndef DefaultTargets
-.PHONY: $(TeemSrc)/GNUmakefile
include $(TeemSrc)/GNUmakefile
+ifndef $(L).Included
+$(L).Included := yes
#### Describe library L here
####
@@ -66,7 +70,7 @@
####
####
-# boilerplate: declare rules for L via template, finish include guard
-.PHONY: $(TeemSrc)/make/template.mk
+# boilerplate: enable "make test/T", template lib L rules, finish include guard
+$(foreach T,$($(L).Test),$(eval test/$(T) : ../$(L)/test/$(T)))
include $(TeemSrc)/make/template.mk
endif # ifndef $(L).Included
Modified: teem/trunk/src/tijk/GNUmakefile
===================================================================
--- teem/trunk/src/tijk/GNUmakefile 2025-08-28 17:29:52 UTC (rev 7332)
+++ teem/trunk/src/tijk/GNUmakefile 2025-08-28 19:45:58 UTC (rev 7333)
@@ -17,13 +17,16 @@
# along with this library; if not, see <https://www.gnu.org/licenses/>.
#
-# boilerplate: start include guard based on containing dir, then
-# set library name L, define default targets, include top-level GNUmakefile
-pardir := $(notdir $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST))))))
-ifndef $(pardir).Included
-######## HERE is where L is set to library name
-L := $(pardir)
-$(L).Included := yes
+#### Library name
+####
+####
+L := tijk
+####
+####
+####
+
+# boilerplate: set top-level paths and targets if not set, include top-level GNUmakefile,
+# and guard reading of per-library variables and (via template.mk) rules
TeemRoot ?= ../..
TeemSrc ?= ..
ifndef DefaultTargets
@@ -32,8 +35,9 @@
test : $(L).test
clean : $(L).clean
endif # ifndef DefaultTargets
-.PHONY: $(TeemSrc)/GNUmakefile
include $(TeemSrc)/GNUmakefile
+ifndef $(L).Included
+$(L).Included := yes
#### Describe library L here
####
@@ -48,7 +52,7 @@
####
####
-# boilerplate: declare rules for L via template, finish include guard
-.PHONY: $(TeemSrc)/make/template.mk
+# boilerplate: enable "make test/T", template lib L rules, finish include guard
+$(foreach T,$($(L).Test),$(eval test/$(T) : ../$(L)/test/$(T)))
include $(TeemSrc)/make/template.mk
endif # ifndef $(L).Included
Modified: teem/trunk/src/unrrdu/GNUmakefile
===================================================================
--- teem/trunk/src/unrrdu/GNUmakefile 2025-08-28 17:29:52 UTC (rev 7332)
+++ teem/trunk/src/unrrdu/GNUmakefile 2025-08-28 19:45:58 UTC (rev 7333)
@@ -17,13 +17,16 @@
# along with this library; if not, see <https://www.gnu.org/licenses/>.
#
-# boilerplate: start include guard based on containing dir, then
-# set library name L, define default targets, include top-level GNUmakefile
-pardir := $(notdir $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST))))))
-ifndef $(pardir).Included
-######## HERE is where L is set to library name
-L := $(pardir)
-$(L).Included := yes
+#### Library name
+####
+####
+L := unrrdu
+####
+####
+####
+
+# boilerplate: set top-level paths and targets if not set, include top-level GNUmakefile,
+# and guard reading of per-library variables and (via template.mk) rules
TeemRoot ?= ../..
TeemSrc ?= ..
ifndef DefaultTargets
@@ -32,8 +35,9 @@
test : $(L).test
clean : $(L).clean
endif # ifndef DefaultTargets
-.PHONY: $(TeemSrc)/GNUmakefile
include $(TeemSrc)/GNUmakefile
+ifndef $(L).Included
+$(L).Included := yes
#### Describe library L here
####
@@ -61,7 +65,7 @@
####
####
-# boilerplate: declare rules for L via template, finish include guard
-.PHONY: $(TeemSrc)/make/template.mk
+# boilerplate: enable "make test/T", template lib L rules, finish include guard
+$(foreach T,$($(L).Test),$(eval test/$(T) : ../$(L)/test/$(T)))
include $(TeemSrc)/make/template.mk
endif # ifndef $(L).Included
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <kin...@us...> - 2025-08-28 17:29:54
|
Revision: 7332
http://sourceforge.net/p/teem/code/7332
Author: kindlmann
Date: 2025-08-28 17:29:52 +0000 (Thu, 28 Aug 2025)
Log Message:
-----------
no longer using lib.bild phony targets: binaries directly depend on all the .a and .h files that they need. This fixes a long-standing annoyance that binaries were compiled redundantly with multiple runs of make
Modified Paths:
--------------
teem/trunk/src/bin/GNUmakefile
Modified: teem/trunk/src/bin/GNUmakefile
===================================================================
--- teem/trunk/src/bin/GNUmakefile 2025-08-28 17:28:13 UTC (rev 7331)
+++ teem/trunk/src/bin/GNUmakefile 2025-08-28 17:29:52 UTC (rev 7332)
@@ -17,7 +17,7 @@
# along with this library; if not, see <https://www.gnu.org/licenses/>.
#
-# boilerplate: default targets, include, and guarding per-"lib" rules
+# boiler-ish-plate: default targets, include, and guarding per-"lib" rules
ifndef bin.Included
TeemRoot ?= ../..
TeemSrc ?= ..
@@ -29,22 +29,22 @@
.PHONY: $(TeemSrc)/GNUmakefile
include $(TeemSrc)/GNUmakefile
-#### By the ordering and guarding of includes, this will ALWAYS be the last "library"
+#### By the ordering and guarding of includes, this should ALWAYS be the last "library"
#### makefile to be parsed, regardless of the directory in which make started.
-## Bins: all the command-line executables associated with teem
-##
+# Bins: all the command-line executables associated with teem
+#
Bins := airSanity nrrdSanity overrgb talkweb unu cubic qbert ilk \
emap gkms ungantry spots tend miter mrender pprobe vprobe gprobe \
deconv puller
-## BinsBild: full paths to all built and "installed" binaries
-##
+# BinsBild: full paths to all built and "installed" binaries
+#
#$(warning BinsBild := $(foreach bin,$(Bins),$(BinPath)/$(bin)))
BinsBild := $(foreach bin,$(Bins),$(BinPath)/$(bin))
-## Entry-point targets for binaries.
-##
+# Entry-point targets for binaries.
+#
#$(warning bin.bild: $(BinsBild))
bin.bild: $(BinsBild)
bin.clean:
@@ -53,23 +53,25 @@
$(RM) -r $(foreach bin,$(BinsBild),$(bin)$(LITTER))
endif
-## Each bin needs to know the libraries it immediately depends on.
-## We do *not* need to manually find the transitive closure here
-##
-# HEY should be generating this by some sort of grep on each bin.c
+# Each bin needs to know the libraries it immediately depends on. We
+# do *not* need to manually find the transitive closure here. What is
+# listed here is just the lib that are #include <teem/lib.h> at the
+# start of the bin.c (perhaps this could be automated) though for
+# those that use meet, that is the only one listed (since meet depends
+# on all others).
airSanity.Depends := air
nrrdSanity.Depends := nrrd biff
overrgb.Depends := nrrd hest biff air
talkweb.Depends := nrrd biff hest air
-unu.Depends := unrrdu nrrd biff hest air
+unu.Depends := unrrdu
cubic.Depends := ell
qbert.Depends := bane gage nrrd hest air
-ilk.Depends := moss unrrdu nrrd ell biff hest air
+ilk.Depends := moss unrrdu
emap.Depends := limn nrrd ell biff hest air
-gkms.Depends := bane nrrd biff air
+gkms.Depends := bane
ungantry.Depends := gage nrrd biff hest air
-spots.Depends := alan nrrd ell biff hest air
-tend.Depends := ten limn gage dye unrrdu nrrd ell biff air
+spots.Depends := ten alan nrrd hest
+tend.Depends := ten
miter.Depends := mite hoover limn nrrd ell biff air
mrender.Depends := meet
pprobe.Depends := meet
@@ -78,28 +80,35 @@
deconv.Depends := meet
puller.Depends := meet
-# Binary B depends on building the libraries it depends on (and we let
-# make figure out the transitive closure), but/and,
-# when linking binary B we need to know all (the transitive closure of)
-# the libraries that B depends on, and we only want to compute that once,
-# so we save it in a target-specific variable B.needs
-# We express both inside a multi-line function:
-#$(warning $(BinPath)/$1 : $(foreach lib,$($(1).Depends),$(lib).bild))
-#$(warning $(BinPath)/$1 : $1.needs := $(sort $(foreach lib,$($(1).Depends),$($(lib).MeNeed))))
-define bin-deps
-$(BinPath)/$1 : $(foreach lib,$($(1).Depends),$(lib).bild)
-$(BinPath)/$1 : $1.needs := $(sort $(foreach lib,$($(1).Depends),$($(lib).MeNeed)))
+# Binary B depends on building the libraries it depends on. We could use the air.bild,
+# biff.bild, etc phony targets that represent the completed building of those libraries,
+# and let make figure out the transitive closure of those, to know the complete set of
+# libraries that B depends on. However, since phony targets are always out of date, the
+# binaries would get recompiled with every run (e.g. airSanity gets recompiled every time
+# because it would depends on air.bild but air.bild is always out of date). Thus, we
+# rely on the pre-computed per-library transitive closure stored in $(L).MeNeed to:
+# - set $(B).needlib = transitive closure of all libraries depended on
+# - set $(B).needfile = .h and .a files associated with all the above libraries
+# - state dependency of $(BinPath)/$(B) on $(B).needfile
+# We can put this inside a multi-line "function" that we then $(eval) However, everything
+# except the $(1) argument (the binary name) to the function has to have delayed
+# evaluation via $$, or else it won't work (specifically, eval will try to immediately
+# evaluate $($(1).needfile) throughout the body of the function, but it won't have a
+# value yet, so the dependency on $($(1).needfile) will be empty)
+define bin-need
+$(1).needlib := $$(sort $$(foreach lib,$$($(1).Depends),$$($$(lib).MeNeed)))
+$(1).needfile := $$(foreach lib,$$($(1).needlib),$$(call LibFile,$$(lib)) $$(call HdrFile,$$(lib)))
+$$(BinPath)/$(1) : $$($(1).needfile)
endef
-# For each binary B, state B's library dependencies, and compute B.needs
-$(foreach bin,$(Bins),$(eval $(call bin-deps,$(bin))))
+# Run bin-need for each binary B:
+$(foreach bin,$(Bins),$(eval $(call bin-need,$(bin))))
-## How to make binary B from B.c
-##
+# How to make binary B from B.c
$(BinPath)/% : $(TeemSrc)/bin/%.c
$(CC) $(CFLAGS) $(BIN_CFLAGS) $(dashI) -o $@ $< \
- $(dashL) $(call llink,$($(notdir $@).needs)) \
- $(call Externs.dashL,$($(notdir $@).needs)) $(call Externs.llink,$($(notdir $@).needs)) -lm
+ $(dashL) $(call llink,$($(notdir $@).needlib)) \
+ $(call Externs.dashL,$($(notdir $@).needlib)) $(call Externs.llink,$($(notdir $@).needlib)) -lm
# we're not a library; template.mk doesn't apply to us
endif # ifndef bin.Included
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <kin...@us...> - 2025-08-28 17:28:14
|
Revision: 7331
http://sourceforge.net/p/teem/code/7331
Author: kindlmann
Date: 2025-08-28 17:28:13 +0000 (Thu, 28 Aug 2025)
Log Message:
-----------
some reorganization
Modified Paths:
--------------
teem/trunk/src/GNUmakefile
Modified: teem/trunk/src/GNUmakefile
===================================================================
--- teem/trunk/src/GNUmakefile 2025-08-28 05:40:56 UTC (rev 7330)
+++ teem/trunk/src/GNUmakefile 2025-08-28 17:28:13 UTC (rev 7331)
@@ -65,6 +65,9 @@
#### and are thus removed. Instead, a new single make/arch.mk contains the
#### information that used to be there, or at least variables from which to hang
#### this info.
+#### Analogously, the results of building are no longer put into a per-architecture
+#### subdirectory of teem/arch. teem/arch is gone. Instead the results of building are
+#### put into teem/built, with its include/, lib/ and bin/ subdirectories.
ifndef Top.Included
Top.Included := yes
@@ -76,7 +79,7 @@
.SUFFIXES :
# avoids "make -d" perseverating with "Trying implicit prerequisite `....w'."
-# (.w files are for Knuth's cweave/ctangle)
+# (.w files are for Knuth's cweb/cweave/ctangle literate programming)
MAKEFLAGS += -r
## TeemRoot: a relative path to directory containing "src", "include", "built" subdirs
@@ -95,8 +98,8 @@
include $(TeemSrc)/make/arch.mk
## Now that CMake-based compilation is the default, the (GNUmake) non-CMake building has
-## to a little extra work to keep working: this extra -DTEEM_NON_CMAKE flag says to $(CC)
-## "we're not building with cmake" (so e.g. don't look for teem/airExistsConf.h)
+## accomodate: this extra -DTEEM_NON_CMAKE flag says to $(CC) "we're not building with
+## cmake" (so e.g. don't look for teem/airExistsConf.h)
CFLAGS += -DTEEM_NON_CMAKE
## information about optional external libraries to link with
@@ -112,13 +115,15 @@
Libs := air hest biff nrrd ell moss unrrdu alan tijk gage dye bane limn echo hoover seek ten elf pull coil push mite meet
DepNums := 0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M
ifneq ($(words $(Libs)),$(words $(DepNums)))
- $(error |Libs| == $(words $(Libs)) != $(words $(DepNums)) == |DepNums|)
+ $(error Sorry, |Libs| == $(words $(Libs)) != $(words $(DepNums)) == |DepNums|)
endif
ifneq ($(DepNums),$(sort $(DepNums)))
- $(error Not already sorted? DepNums == $(DepNums))
+ $(error Sorry, not already sorted: DepNums == $(DepNums))
endif
# https://stackoverflow.com/questions/52674/simplest-way-to-reverse-the-order-of-strings-in-a-make-variable
reverse = $(if $(1),$(call reverse,$(wordlist 2,$(words $(1)),$(1)))) $(firstword $(1))
+# this one not working? https://www.gnu.org/software/make/manual/make.html#Let-Function
+# reverse = $(let first rest,$1,$(if $(rest),$(call reverse,$(rest)) )$(first))
RevNums := $(strip $(call reverse,$(DepNums)))
DepLibs := $(join $(DepNums),$(Libs:%=/%))
RevLibs := $(join $(RevNums),$(Libs:%=/%))
@@ -155,18 +160,6 @@
teem.test : $(addsuffix .test,$(Libs)) # there is no bin.test
teem.clean : $(addsuffix .clean,$(Libs) bin)
-## if.missing(path): returns "missing" if path does not exist
-##
-if.missing = $(if $(wildcard $(1)),,missing)
-
-## create.if.missing(dir): creates directory dir if it doesn't exist,
-## and gives a warning to that effect
-##
-create.if.missing = \
- $(if $(call if.missing,$(1)),\
- $(warning *** WARNING ***: Creating needed directory $(1)) \
- $(shell mkdir $(1)))
-
## Set variables connected to directories where things go
## ObjPath: where the .o object files go
## HdrPath: where .h header files go (for #include <>)
@@ -184,10 +177,23 @@
dashL += -L$(LibPath)
#######################################
-## "Functions": The bread and butter of how template.mk works. Each of these can be
-## $(call)ed with a library name, as the one and only argument, in order to get a list of
-## files or flags related to library.
+## "Functions": How template.mk gets work done.
##
+## some little utilities:
+## llink(LIBS): "-lL" for all L in LIBS, in correct link order
+## banner(L): progress indication for compiling library L; used in template.mk.
+## if.missing(path): returns "missing" if path does not exist
+## create.if.missing(dir): creates directory dir if it doesn't exist,
+## and gives a warning to that effect
+##
+if.missing = $(if $(wildcard $(1)),,missing)
+create.if.missing = \
+ $(if $(call if.missing,$(1)),\
+ $(warning *** WARNING ***: Creating needed directory $(1)) \
+ $(shell mkdir $(1)))
+llink = $(foreach L,$(call RevOrder,$(1)),-l$(L))
+banner = echo -e "\n-------" $(1) "-------" $(1) "-------" $(1) "-------" $(1) "-------\n"
+
## NOTE: In all of these, "File" could be singular or plural
## SrcHdrFile(L): paths to all (public and private) headers in souce for lib L
## HdrFile(Ls): paths to all public headers "installed" for lib L in Ls
@@ -206,14 +212,19 @@
## MeNeed(L): L and Need(L), in dependency order
##
## Yes, the whole point of "make" is to keep track of dependencies, so this would seem to
-## be a little pointless. But the issue is linking with -llib for every library lib: how
-## do you assemble the complete link command? It needs to be the transitive closure of
-## the libs depended on. I (GLK) can't figure out how to do this implicitly via make,
-## hence the stuff below. Because I can't figure out how to do fixed-point determination
-## as part of a recursive function call, I'm only doing a few levels of explicit
-## prerequisite expansion. Each level is done by "dmnl" (discover more needed libs). The
-## number of levels is more than enough for current Teem; adding more levels later is
-## trivial.
+## be a little pointless. But there are at least two cases where we want to explicitly
+## represent the transitive closure of dependencies: (1) linking with -llib for every
+## library lib: how do you assemble the complete link command? It needs to be the
+## transitive closure of the libs depended on. (2) When stating the dependencies of
+## executables, we want to avoid phony targets so executables are not needlessly rebuilt
+## with repeated "make"s. This means that instead of an executable depending on lib.bild
+## for some set of lib, it needs to explicitly depend on every concrete file that all the
+## lib.bild depend on (which requires the transitive closer). I (GLK) can't figure out
+## how to do this implicitly via make, hence the stuff below. Because I can't figure out
+## how to do fixed-point determination as part of a recursive function call, I'm only
+## doing a few levels of explicit prerequisite expansion. Each level is done by "dmnl"
+## (discover more needed libs). The number of levels is more than enough for current
+## Teem; adding more levels later is trivial.
##
## Since we rely on $(sort) to remove redundancies, we need a way of putting the
## libraries back in dependency order (!= lexical order). So, we prefix the needed
@@ -231,13 +242,6 @@
$(foreach lib,$(1),$($(lib).Depends))))))
MeNeed = $(call DepOrder,$(1) $(call Need,$(1)))
-## More utilities
-## llink(LIBS): "-lL" for all L in LIBS, in correct link order
-## banner(L): progress indication for compiling library L; used in template.mk.
-##
-llink = $(foreach L,$(call RevOrder,$(1)),-l$(L))
-banner = echo -e "\n-------" $(1) "-------" $(1) "-------" $(1) "-------" $(1) "-------\n"
-
## For optional external libraries we can depend on (e.g. png, zlib, levmar)
## Read make/externals.mk for context and full list AllExterns
##
@@ -298,9 +302,9 @@
## Read in the makefiles for all the libraries, and the bins. Run-away recursive
## inclusion is prevented by the Top.Included and other guards. Note: "include" is a
-## directive, not a function, which eliminates the possibility of iterating through the
-## libraries, reading the make file, and then setting variables based on what was just
-## read.
+## directive, not a function, which would seem to eliminate the possibility of iterating
+## through the libraries, reading the make file, and then setting variables based on what
+## was just read.
##
## Unfortunate trickiness: Lsave preserves the value of L, in case we're being included
## from a lower-level GNUmakefile which set a value for L. If we didn't put L back the
@@ -312,6 +316,7 @@
Lsave := $(L)
endif
endif
+# bin/GNUmakefile must be read in last; it requires knowledge of all other libs
include $(foreach LIB,$(Libs) bin,$(TeemSrc)/$(LIB)/GNUmakefile)
ifdef Lsave
# ... and clever"
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <kin...@us...> - 2025-08-28 05:40:58
|
Revision: 7330
http://sourceforge.net/p/teem/code/7330
Author: kindlmann
Date: 2025-08-28 05:40:56 +0000 (Thu, 28 Aug 2025)
Log Message:
-----------
caveat about these instructions
Modified Paths:
--------------
teem/trunk/src/release.txt
Modified: teem/trunk/src/release.txt
===================================================================
--- teem/trunk/src/release.txt 2025-08-28 05:17:10 UTC (rev 7329)
+++ teem/trunk/src/release.txt 2025-08-28 05:40:56 UTC (rev 7330)
@@ -94,7 +94,7 @@
4) Checkout a tree:
Use CMake to try building and installing a variety of platforms ...
-(these steps are ancient guidance, from before CMake, and before TeemV2 simplifications)
+HEY HEY these steps are ancient guidance, from before CMake, and before TeemV2 simplifications
rapture/ray/muse:
setenv TEEM_ARCH irix6.64
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <kin...@us...> - 2025-08-28 05:17:13
|
Revision: 7329
http://sourceforge.net/p/teem/code/7329
Author: kindlmann
Date: 2025-08-28 05:17:10 +0000 (Thu, 28 Aug 2025)
Log Message:
-----------
With a second modernization of how CMake is used to build Teem, one might think
that the older GNUmake-based build system is obsolete. In fact, GLK still
prefers it for Teem hacking, since it offers more incremental per-library
builds, and building of per-library test programs. This build system was first
written in ~2001, before CMake was useful or popular. It was needlessly
complicated, in part because it was designed for having multiple architectures
share a networked filesystem. For Teem V2, GLK revisited all the GNUmakefiles
and simplified and cleaned them up: there are no more per-archicture
teem/src/make/foo.mk files, and there is no effort to make the monolithic
("megalib") libteem library, or any kind of shared library.
More details. This simplification meant removing (from everywhere)
env var TEEM_ARCH
env var TEEM_DEST (because now any "install" should be done via CMake)
make vars ARCH, SUBARCH
everything about shared libraries: TEEM_LINK_SHARED, SHEXT
as well as variables TEEM_EXT_IPATH and TEEM_EXT_LPATH (for all EXT externals
PNG ZLIB BZIP2 PTHREAD LEVMAR FFTW3, e.g TEEM_ZLIB_IPATH, TEEM_ZLIB_LPATH);
these have become EXT.DASHI and EXT.DASHL set in make/externals.mk
Also gone: file errorCheck.mk (so simple, nothing left to error check)
make var KNOWN_ARCH,
make funcs checkArchSet, checkArchValid,
checkArchLinux, checkArchLinux64, checkArchNetbsd64, checkArchDarwin
per-"architecture" files in make/
aix.mk cygwin.mk darwin.mk irix6.mk linux.mk netbsd.mk solaris.mk win32.mk
Instead, a new single make/arch.mk contains the information that used to be there,
or at least variables from which to hang this info.
Modified Paths:
--------------
teem/trunk/src/GNUmakefile
teem/trunk/src/air/GNUmakefile
teem/trunk/src/alan/GNUmakefile
teem/trunk/src/bane/GNUmakefile
teem/trunk/src/biff/GNUmakefile
teem/trunk/src/bin/GNUmakefile
teem/trunk/src/coil/GNUmakefile
teem/trunk/src/dye/GNUmakefile
teem/trunk/src/echo/GNUmakefile
teem/trunk/src/elf/GNUmakefile
teem/trunk/src/ell/GNUmakefile
teem/trunk/src/gage/GNUmakefile
teem/trunk/src/hest/GNUmakefile
teem/trunk/src/hoover/GNUmakefile
teem/trunk/src/limn/GNUmakefile
teem/trunk/src/make/arch.mk
teem/trunk/src/make/externals.mk
teem/trunk/src/make/template.mk
teem/trunk/src/meet/GNUmakefile
teem/trunk/src/mite/GNUmakefile
teem/trunk/src/moss/GNUmakefile
teem/trunk/src/nrrd/GNUmakefile
teem/trunk/src/pull/GNUmakefile
teem/trunk/src/push/GNUmakefile
teem/trunk/src/seek/GNUmakefile
teem/trunk/src/ten/GNUmakefile
teem/trunk/src/tijk/GNUmakefile
teem/trunk/src/unrrdu/GNUmakefile
Modified: teem/trunk/src/GNUmakefile
===================================================================
--- teem/trunk/src/GNUmakefile 2025-08-27 21:42:50 UTC (rev 7328)
+++ teem/trunk/src/GNUmakefile 2025-08-28 05:17:10 UTC (rev 7329)
@@ -1,6 +1,6 @@
#
# Teem: Tools to process and visualize scientific data and images
-# Copyright (C) 2009--2023 University of Chicago
+# Copyright (C) 2009--2025 University of Chicago
# Copyright (C) 2005--2008 Gordon Kindlmann
# Copyright (C) 1998--2004 University of Utah
#
@@ -20,122 +20,144 @@
####
#### top-level GNUmakefile: Master makefile for teem
####
+#### NOTE: You should probably be using CMake instead of this GNU Makefile! CMake builds
+#### Teem by creating one monolithic library (libteem) and the executables (e.g. unu)
+#### that link with that, which is very likely what you want.
+####
+#### This GNUmakefile logic was first written by GLK in ~2001, before CMake was useful or
+#### popular. It builds Teem one library at a time (not a single monolithic library like
+#### from CMake), and handles the per-library "test" programs (distinct from the nascent
+#### efforts at using CTest). Because this remains useful for debugging and developing
+#### Teem, it persists, and GLK uses it.
+####
+#### For TeemV2, all the GNUMakefile machinery was simplified to remove any notion of
+#### "architecture" and the environment variable "TEEM_ARCH" that declared it. It was
+#### never exactly the CPU architecture, but rather some mix of the architecture and the
+#### OS around it. And, it only made sense for settings where one (network) file system
+#### was being used on a variety of different machines. This was the case in where Teem
+#### was first developed at University of Utah (Scientific Computing and Imaging group):
+#### SGI, Linux (32-bit x86, ia64 and amd64), and Solaris hosts all talked on the same
+#### filesystem. Development builds needed to put binaries in different places depending
+#### on platform, and this was determined by environment variable TEEM_ARCH, which in
+#### turn chose an architecture-specific subdirectory of teem/src/arch to put things
+#### in. Even if these kinds of heterogeneous environments still exist, Teem development
+#### no longer happens there. Also in the interests of simplicity: everything about
+#### shared libraries was dropped. The only shared library that matters is libteem.so or
+#### libteem.dylib, and making that is better handled by CMake than by anything here.
+####
+#### This simplification meant removing:
+#### (from everywhere)
+#### env var TEEM_ARCH
+#### env var TEEM_DEST (because now any "install" should be done via CMake)
+#### make vars ARCH, SUBARCH
+#### everything about shared libraries: TEEM_LINK_SHARED, SHEXT
+#### as well as variables TEEM_EXT_IPATH and TEEM_EXT_LPATH (for all EXT externals
+#### PNG ZLIB BZIP2 PTHREAD LEVMAR FFTW3, e.g TEEM_ZLIB_IPATH, TEEM_ZLIB_LPATH);
+#### these have become EXT.DASHI and EXT.DASHL set in make/externals.mk
+####
+#### file errorCheck.mk gone (so simple, nothing left to error check)
+#### make var KNOWN_ARCH
+#### make funcs checkArchSet, checkArchValid,
+#### checkArchLinux, checkArchLinux64, checkArchNetbsd64, checkArchDarwin
+####
+#### With this simplification, these files in make/ stopped being used:
+#### aix.mk cygwin.mk darwin.mk irix6.mk linux.mk netbsd.mk solaris.mk win32.mk
+#### and are thus removed. Instead, a new single make/arch.mk contains the
+#### information that used to be there, or at least variables from which to hang
+#### this info.
-## ".SUFFIXES :" speeds debugging with make -d (and probably make in
-## general) by eliminating the list of suffixes checked by implicit
-## pattern rules. The rest of the rules are to tell make to forget
-## about trying to automatically update the files that we "include"
+ifndef Top.Included
+Top.Included := yes
+
+## ".SUFFIXES :" speeds debugging with "make -d" (and probably make in general) by
+## eliminating the list of filename extensions (.y, .l, etc) checked by implicit pattern
+## rules.
##
.SUFFIXES :
-% : %,v
-% : RCS/%,v
-% : RCS/%
-% : s.%
-% : SCCS/s.%
-%.c : %.w # this doesn't seem to work, unfortunately
-## TEEM_ROOT: a relative path to the directory which contains the
-## "src", "include", and all the architecture-specific directories
-## (which in turn contain "bin", "lib", and "obj"). Whether
-## make started on this makefile or on an individual library's
-## makefile determines who gets to set TEEM_ROOT first. Same for
-## TEEM_SRC, a relative path to the "src" directory
-##
-TEEM_ROOT ?= ..
-TEEM_SRC ?= .
+# avoids "make -d" perseverating with "Trying implicit prerequisite `....w'."
+# (.w files are for Knuth's cweave/ctangle)
+MAKEFLAGS += -r
-## When making Windows project files, set TEEM_ARCH to cygwin
-ifeq (project, $(MAKECMDGOALS))
-TEEM_ARCH ?= cygwin
-endif
-
-## read in the check* functions, and check on TEEM_ARCH
+## TeemRoot: a relative path to directory containing "src", "include", "built" subdirs
+## Whether make started on this GNUmakefile, or that of a subdirectory, determines who
+## gets to set TeemRoot first. Same for TeemSrc, a relative path to the "src" subdir
##
-include $(TEEM_SRC)/make/errorCheck.mk
-$(checkArchSet)
-$(checkArchLinux)
-$(checkArchLinux64)
-$(checkArchNetbsd64)
-$(checkArchDarwin)
-$(checkArchValid)
-$(checkTeemDest)
+TeemRoot ?= ..
+TeemSrc ?= .
-## the architecture name may have two parts, ARCH and SUBARCH,
-## seperated by one period
+## Enstate the architecture-dependent settings by reading through the file specific to
+## the chosen architecture
##
-ARCH = $(basename $(TEEM_ARCH))
-SUBARCH = $(patsubst .%,%,$(suffix $(TEEM_ARCH)))
-
-## Before we read in the architecture-dependent stuff, take a stab at
-## defining the various programs we'll need, and some of their flags.
-## If these are not over-written, we assume that they'll work.
+## We assume that arch.mk will finish with these all being set:
+## CC, LD, AR, ARFLAGS, RANLIB, RM, CP, CHMOD, CFLAGS, BIN_CFLAGS
##
-CC ?= cc
-LD = ld
-AR = ar
-ARFLAGS = ru
-RM = rm -f
-CP = cp
-CHMOD = chmod
-SLEEP = sleep
+include $(TeemSrc)/make/arch.mk
-## Enstate the architecture-dependent settings by reading through the
-## file specific to the chosen architecture, then check the things that
-## are set there.
-##
-include $(TEEM_SRC)/make/$(ARCH).mk
-$(checkShext)
+## Now that CMake-based compilation is the default, the (GNUmake) non-CMake building has
+## to a little extra work to keep working: this extra -DTEEM_NON_CMAKE flag says to $(CC)
+## "we're not building with cmake" (so e.g. don't look for teem/airExistsConf.h)
+CFLAGS += -DTEEM_NON_CMAKE
-## information about optional external ("xtern") libraries to link with
+## information about optional external libraries to link with
##
-include $(TEEM_SRC)/make/externals.mk
+include $(TeemSrc)/make/externals.mk
-## LIBS: all the teem libraries we'll try to build
-## NUMS: "numbering" of all the libraries in dependency order
-## RNUMS: in link order, and "top-dep" order needed by bin/GNUmakefile
-## {R}NUM/LIBS: used for craziness below
+## Libs: all the teem libraries we'll try to build
+## DepNums: indices numbering all the libs, in *Dep*endency order
+## RevNums: indices for numbering libs in (reverse) order for linking
+## DepLibs, RevLibs: strings of N/L (number/library) pairs, in either order
## (TEEM_LIB_LIST)
##
-LIBS = air hest biff nrrd ell moss unrrdu alan tijk gage dye bane limn echo hoover seek ten elf pull coil push mite meet
-NUMS = 0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M
-RNUMS = M L K J I H G F E D C B A 9 8 7 6 5 4 3 2 1 0
+Libs := air hest biff nrrd ell moss unrrdu alan tijk gage dye bane limn echo hoover seek ten elf pull coil push mite meet
+DepNums := 0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M
+ifneq ($(words $(Libs)),$(words $(DepNums)))
+ $(error |Libs| == $(words $(Libs)) != $(words $(DepNums)) == |DepNums|)
+endif
+ifneq ($(DepNums),$(sort $(DepNums)))
+ $(error Not already sorted? DepNums == $(DepNums))
+endif
+# https://stackoverflow.com/questions/52674/simplest-way-to-reverse-the-order-of-strings-in-a-make-variable
+reverse = $(if $(1),$(call reverse,$(wordlist 2,$(words $(1)),$(1)))) $(firstword $(1))
+RevNums := $(strip $(call reverse,$(DepNums)))
+DepLibs := $(join $(DepNums),$(Libs:%=/%))
+RevLibs := $(join $(RevNums),$(Libs:%=/%))
-NUM/LIBS = $(join $(NUMS),$(LIBS:%=/%))
-RNUM/LIBS = $(join $(RNUMS),$(LIBS:%=/%))
+## Modes: the purpose of running make:
+## bild = compiling/building/making something from source files
+## test = (depends on bild) builds intra-library "test" programs
+## clean = removing whatever bild and test does
+## Declaring all these modes as phony saves make the effort of trying implicit rules to
+## update them.
+.PHONY : bild test clean
+Modes := bild test clean
+# expands to: teem.bild teem.test teem.clean air.bild air.test air.clean ... bin.bild bin.test bin.clean
+# (even though bin.test is never actually a target)
+.PHONY : $(foreach L,teem $(Libs) bin,$(Modes:%=$(L).%))
-## MODES: the different kinds of builds that we support. Declaring
-## these modes (for all libraries) as phony saves make the effort of
-## trying implicit rules to update them.
+## Top-level default rules. If make started with this file, then these will be the first
+## rules that make sees, so that "make" defaults to "make teem.bild" If make started in
+## subdirectory for library L, then default target "bild" will depend on L.bild, and
+## "clean" will depend on L.clean.
##
-MODES = install dev clean clobber
-.PHONY : $(foreach LIB,teem $(LIBS),$(MODES:%=$(LIB)/%)) teem.dsp
-
-## Top-level/default rules. If make started with this file, then
-## these will be the first rules that make sees, so that "make"
-## defaults to "make X/install" for *every* library X. If make
-## started in a library subdirectory, these won't be seen at all.
-##
-ifeq (,$(DEF_TARGETS))
- install : teem/install
- dev : teem/dev
- clean : teem/clean
- clobber : teem/clobber
- DEF_TARGETS := true
+ifndef DefaultTargets
+ DefaultTargets := yes
+ bild : teem.bild
+ # kind of a crazy (test are for helping write one library) but allowed
+ test : teem.test
+ clean : teem.clean
endif
-## Top-level rules, available regardless of where make started
+## Top-level rules, available regardless of where make started:
+## teem.M (for mode M) depends on X.M for all libs X and on bin.M
##
-teem/install : $(addsuffix /install,$(LIBS) bin) megalibs
-teem/dev : $(addsuffix /dev,$(LIBS) bin)
-teem/clean : $(addsuffix /clean,$(LIBS) bin)
- $(if $(TEEM_LITTER),$(RM) $(TEEM_ROOT)/src/$(TEEM_LITTER))
-teem/clobber : teem/clean $(addsuffix /clobber,$(LIBS) bin) unmegalibs
-nothing : ;
+teem.bild : $(addsuffix .bild,$(Libs) bin)
+teem.test : $(addsuffix .test,$(Libs)) # there is no bin.test
+teem.clean : $(addsuffix .clean,$(Libs) bin)
-## if.missing(stuff): returns $stuff if one or more of the files
-## listed in stuff don't exist
+## if.missing(path): returns "missing" if path does not exist
##
-if.missing = $(if $(strip $(foreach x,$(1),$(if $(wildcard $(x)),,no))),$(1))
+if.missing = $(if $(wildcard $(1)),,missing)
## create.if.missing(dir): creates directory dir if it doesn't exist,
## and gives a warning to that effect
@@ -145,211 +167,155 @@
$(warning *** WARNING ***: Creating needed directory $(1)) \
$(shell mkdir $(1)))
-## Set directory-related variables: where to install things, as well
-## as the directories used in conjunction with the -I and -L path
-## flags for cc and ld
-##
-ifeq (undefined,$(origin TEEM_DEST))
- IDEST = $(TEEM_ROOT)/include
- LDEST = $(TEEM_ROOT)/arch/$(TEEM_ARCH)/lib
- BDEST = $(TEEM_ROOT)/arch/$(TEEM_ARCH)/bin
-else
- IDEST = $(TEEM_DEST)/include
- LDEST = $(TEEM_DEST)/lib
- BDEST = $(TEEM_DEST)/bin
- $(foreach dir,$(IDEST) $(LDEST) $(BDEST),\
- $(call create.if.missing,$(dir)))
-endif
-## create IDEST/teem if necessary
-$(call create.if.missing,$(IDEST)/teem)
-ODEST = $(TEEM_ROOT)/arch/$(TEEM_ARCH)/obj
-IPATH += -I$(IDEST)
-LPATH += -L$(LDEST)
-ifneq (undefined,$(origin TEEM_DEST))
- # we still need this for the teem*.h headers (such as teemEndian.h)
- IPATH += -I$(TEEM_ROOT)/include
-endif
+## Set variables connected to directories where things go
+## ObjPath: where the .o object files go
+## HdrPath: where .h header files go (for #include <>)
+## LibPath: where the .a library files go
+## BinPath: where executables go
+ObjPath := $(TeemRoot)/built/obj
+HdrPath := $(TeemRoot)/built/include
+LibPath := $(TeemRoot)/built/lib
+BinPath := $(TeemRoot)/built/bin
+$(foreach dir,$(ObjPath) $(HdrPath) $(HdrPath)/teem $(LibPath) $(BinPath),\
+ $(call create.if.missing,$(dir)))
+dashI += -I$(HdrPath)
+# we still need this for the teem*.h headers (such as teemPng.h)
+dashI += -I$(TeemRoot)/include
+dashL += -L$(LibPath)
-## By giving a list of library extensions we care about, LIBEXTS determines
-## what kinds of libraries are built (just static, or both static and
-## shared)
-##
-ifdef TEEM_SHEXT
- LIBEXTS = $(TEEM_SHEXT)
-endif
-LIBEXTS += a
-
#######################################
-## Flags
+## "Functions": The bread and butter of how template.mk works. Each of these can be
+## $(call)ed with a library name, as the one and only argument, in order to get a list of
+## files or flags related to library.
##
-ifneq (undefined,$(origin TEEM_LINK_SHARED))
- # If we ever have absolutify-this-path working, then having an
- # absolute TEEM_DEST path is no longer a pre-requisite
- BIN_CFLAGS += $(SHARED_CFLAG) $(if $(TEEM_DEST),$(if $(SHARED_RPATH),$(SHARED_RPATH)$(LDEST),),)
-else
- BIN_CFLAGS += $(STATIC_CFLAG)
-endif
-
-## CMake is how most people will compile Teem, but these GNUMakefiles are
-## still what GLK uses day-to-day when working with Teem, with their finer
-## per-library granularity. Some additions to CFLAGS are adaptions help these
-## GNUMakfiles adapt to the CMake world around them. -DTEEM_NON_CMAKE says:
-## this isn't being build by cmake (so, don't look for teem/airExistsConf.h)
-CFLAGS += -DTEEM_NON_CMAKE $(OPT_CFLAG) $(ARCH_CFLAG)
-LDFLAGS += $(ARCH_LDFLAG) $(SHARED_LDFLAG)
-
-## SGI's C pre-processor errors aren't fatal by default
+## NOTE: In all of these, "File" could be singular or plural
+## SrcHdrFile(L): paths to all (public and private) headers in souce for lib L
+## HdrFile(Ls): paths to all public headers "installed" for lib L in Ls
+## ObjFile(L): paths to all object files to combine to make library L
+## LibFile(L): path to .a library file "installed" for library L
+## TestFile(L): paths to debugging tests for library L, built in-place
##
-CFLAGS += $(TEEM_CPP_ERROR_DIE)
+SrcHdrFile = $(addprefix $(TeemSrc)/$(1)/,$($(1).PublicHdr) $($(1).PrivateHdr))
+HdrFile = $(foreach lib,$(1),$(addprefix $(HdrPath)/teem/,$($(lib).PublicHdr)))
+ObjFile = $(addprefix $(ObjPath)/,$($(1).Obj))
+LibFile = $(LibPath)/lib$(1).a
+TestFile = $(addprefix $(TeemSrc)/$(1)/test/,$($(1).Test))
-#######################################
-## "Functions"
-## The bread and butter of how template.mk works.
-
-## Each of these can be $(call)ed with a library name, as the one
-## and only argument, in order to get a list of files or flags related to
-## library.
+## Need(L): All the libraries that L needs. L's GNUmakefile declares its immediate
+## dependencies in $(L).Depends, but Need(L) is the recursive-ish expansion.
+## MeNeed(L): L and Need(L), in dependency order
##
-## {libs,hdrs}.inst(L): installed libs and headers for library L
-## hdrs.dev(L): the local (original) copies of public and private headers
-## tests.dev(L): library L tests for debugging, built in-place
-## {libs,objs}.dev(L): object files for library L, and the libs used
-## when compiling the tests
-##
-libs.inst = $(foreach ext,$(LIBEXTS),$(LDEST)/lib$(1).$(ext))
-hdrs.inst = $(addprefix $(IDEST)/teem/,$($(1).PUBLIC_HEADERS))
-hdrs.dev = $(addprefix $(TEEM_SRC)/$(1)/,\
- $($(1).PUBLIC_HEADERS) $($(1).PRIVATE_HEADERS))
-tests.dev = $(addprefix $(TEEM_SRC)/$(1)/,$($(1).TESTS))
-libs.dev = $(foreach ext,$(LIBEXTS),$(ODEST)/lib$(1).$(ext))
-objs.dev = $(addprefix $(ODEST)/,$($(1).OBJS))
-hdrs.dev = $(addprefix $(TEEM_SRC)/$(1)/,\
- $($(1).PUBLIC_HEADERS) $($(1).PRIVATE_HEADERS))
-
-## need(L): pseudo-recursive expansion of all the libraries which
-## library L depends on, either directly or indirectly. Because make
-## doesn't allow recursive functions, and because I can't figure out
-## how to do fixed-point determination in gmake, I'm only doing a few
-## levels of prerequisite expansion. Each level is done by "dmnl"
-## (discover more needed libs). The number of levels is more than
-## enough for the current teem; and adding more levels later is
+## Yes, the whole point of "make" is to keep track of dependencies, so this would seem to
+## be a little pointless. But the issue is linking with -llib for every library lib: how
+## do you assemble the complete link command? It needs to be the transitive closure of
+## the libs depended on. I (GLK) can't figure out how to do this implicitly via make,
+## hence the stuff below. Because I can't figure out how to do fixed-point determination
+## as part of a recursive function call, I'm only doing a few levels of explicit
+## prerequisite expansion. Each level is done by "dmnl" (discover more needed libs). The
+## number of levels is more than enough for current Teem; adding more levels later is
## trivial.
##
-## Since we rely on $(sort) to remove redundancies, we need a way of
-## putting the libraries back in dependency order (!= lexical order).
-## So, we prefix the needed library names with [0..D] (via $(join)) to
-## create NUM/LIBS (above), re-sort them, and then lose the prefix
-## with $(notdir). This is done by "deporder". On the link line,
-## however, the ordering needs to be reversed, this is done by
-## "linkorder".
+## Since we rely on $(sort) to remove redundancies, we need a way of putting the
+## libraries back in dependency order (!= lexical order). So, we prefix the needed
+## library names with 0/,1/,...,9/,A/,B/,... (via $(join)) to create DepLibs (above),
+## re-sort them, and then lose the prefix with $(notdir). This is done by "DepOrder". On
+## the link line, however, the ordering needs to be reversed, this is done by "RevOrder".
##
-dmnl = $(sort $(foreach LIB,$(1),$(LIB) $($(LIB).NEED)))
-deporder = $(notdir $(sort $(foreach LIB,$(1),\
- $(filter %/$(LIB),$(NUM/LIBS)))))
-linkorder = $(notdir $(sort $(foreach LIB,$(1),\
- $(filter %/$(LIB),$(RNUM/LIBS)))))
-need = $(call deporder,\
+dmnl = $(sort $(foreach lib,$(1),$(lib) $($(lib).Depends)))
+DepOrder = $(notdir $(sort $(foreach lib,$(1),$(filter %/$(lib),$(DepLibs)))))
+RevOrder = $(notdir $(sort $(foreach lib,$(1),$(filter %/$(lib),$(RevLibs)))))
+Need = $(call DepOrder,\
$(call dmnl,\
$(call dmnl,\
$(call dmnl,\
-$(foreach LIB,$(1),$($(LIB).NEED))))))
-meneed = $(call deporder,$(1) $(call need,$(1)))
+$(foreach lib,$(1),$($(lib).Depends))))))
+MeNeed = $(call DepOrder,$(1) $(call Need,$(1)))
-## link(libs): "-lLIB" for all LIBs in libs, in correct link order
+## More utilities
+## llink(LIBS): "-lL" for all L in LIBS, in correct link order
+## banner(L): progress indication for compiling library L; used in template.mk.
##
-link = $(foreach LIB,$(call linkorder,$(1)),-l$(LIB))
+llink = $(foreach L,$(call RevOrder,$(1)),-l$(L))
+banner = echo -e "\n-------" $(1) "-------" $(1) "-------" $(1) "-------" $(1) "-------\n"
-## banner(L) is progress indication for compiling library L; see
-## template.mk. The double colon rules previously used to print this
-## fatally confused parallel builds
+## For optional external libraries we can depend on (e.g. png, zlib, levmar)
+## Read make/externals.mk for context and full list AllExterns
##
-banner = echo "--------------------" $(1) "--------------------"
-
-#src2lib = $(notdir $(patsubst %/,%,$(dir $(1:.c=))))
-#HDR2LIB = $(notdir $(patsubst %/,%,$(dir $(1:.h=))))
-#STL2LIB = $(patsubst lib%,%,$(notdir $(1:.a=)))
-#SHL2LIB = $(patsubst lib%,%,$(notdir $(1:.$(TEEM_SHEXT)=)))
-
-#used.hdrs = $(foreach lib,$(1),$(call hdrs.inst,$(lib)))
-#used.libs = $(foreach lib,$(1),$(call libs.inst,$(lib)))
-#used = $(call used.libs,$(1)) $(call used.hdrs,$(1))
-
-## related to external optional libraries. Called "xtern"s to avoid
-## similarities to library filename extensions ("ext"s) above.
+## These two reflect the circumstances of running make, not any library:
+## wantsExtern(X): returns X if TEEM_<X> has been set (as a shell variable,
+## but not set to "0"), otherwise nothing
+## Externs: list of all wanted externs (a subset of AllExterns)
+## forExtern(libs,patt): for all external X in Externs,
+## and for all L in libraries $(libs) that benefit from external X,
+## replace "XXX" in $(patt) with X
+## Externs.dashD: the compile-time -D flags needed to enable external
+## library X when compiling objects in libraries $(libs)
+## evallist(list): utility to evaluate each element of list as a variable
+## (in the following, $(libs) which should probably be MeNeed(L) for some lib L)
+## Externs.dashI(libs): the external-specific -I flags needed for compiling
+## objects in libraries $(libs)
+## (using the X.dashI set in make/externals.mk for external X)
+## Externs.dashL(libs): the external-specific -L flags needed for compiling
+## executables that uses libraries $(libs)
+## (using the X.dashL set in make/externals.mk for external X)
+## Externs.llink(libs): the external-specific -l flags needed to link an
+## executable that uses libraries $(libs)
+## (using the X.llink set in make/externals.mk for external X)
##
-## wants.xtern(XTERN): returns XTERN if TEEM_<XTERN> has been set,
-## otherwise nothing
-## xterns: list of all wanted XTERNs (a subset of $(XTERNS))
-## for.xtern(libs,patt): for all xtern in xterns, for all libraries
-## in $(libs) that benefit from $(xtern),
-## replace XXX in $(patt) with $(xtern)
-## evallist(list): evaluates each element of list as a variable
-## xtern.Ipath(LIB): the external-specific -I flags needed for compiling
-## objects in library LIB
-## xtern.Dflag(LIB): the -D flags turned on for library LIB in order to
-## enable the desired externals
-## xtern.Lpath(libs): paths -Lblah for any wanted xterns whose base
-## teem dependency is within libs. libs should probably be $($(L).meneed)
-## for some library L
-## xtern.link(libs): -l link flags for any wanted externals whose base
-## teem dependency is within libs.
-##
-wants.xtern = $(if $(findstring undefined,$(origin TEEM_$(1))),,$(1))
-xterns = $(foreach xtern,$(XTERNS),$(call wants.xtern,$(xtern)))
-for.xtern = $(strip $(foreach xtern,$(xterns),$(foreach lib,$(1),\
- $(if $(filter $(xtern),$($(lib).XTERN)),\
- $(subst XXX,$(xtern),$(2))))))
+# if TEEM_X is undefined, then nothing, else if 0 matches TEEM_X then nothing, else X
+wantsExtern = $(if $(findstring undefined,$(origin TEEM_$(1))),\
+ ,\
+ $(if $(filter 0,$(TEEM_$(1))),\
+ ,\
+ $(1)))
+Externs = $(strip $(foreach X,$(AllExterns),$(call wantsExtern,$(X))))
+# foreach X in Externs and L in libs (only using $(L).Externs if defined)
+forExtern = $(strip $(foreach X,$(Externs),$(foreach L,$(1),\
+ $(if $(findstring undefined,$(origin $(L).Externs)),\
+ ,\
+ $(if $(filter $(X),$($(L).Externs)),\
+ $(subst XXX,$(X),$(2)))))))
+Externs.dashD = $(call forExtern,$(1),-DTEEM_XXX=1)
evallist = $(foreach var,$(1),$($(var)))
-xtern.Ipath = $(call evallist,$(call for.xtern,$(1),TEEM_XXX_IPATH))
-xtern.Dflag = $(call for.xtern,$(1),-DTEEM_XXX=1)
-xtern.Lpath = $(call evallist,$(call for.xtern,$(1),TEEM_XXX_LPATH))
-xtern.link = $(call evallist,$(call for.xtern,$(1),XXX.LINK))
+maybe.prefix = $(if $(2),$(1)$(2))
+Externs.dashI = $(call maybe.prefix,-I,$(call evallist,$(call forExtern,$(1),TEEM_XXX_DASHI)))
+Externs.dashL = $(call maybe.prefix,-L,$(call evallist,$(call forExtern,$(1),TEEM_XXX_DASHL)))
+Externs.llink = $(call evallist,$(call forExtern,$(1),XXX.llink))
+## DEBUG
+#X = PNG
+#$(warning wantsExtern($(X))=$(call wantsExtern,$(X)))
+#$(warning Externs=$(Externs))
+#$(warning forExtern(nrrd ten air tijk,-DTEEM_XXX=1): $(call forExtern,nrrd ten air tijk,-DTEEM_XXX=1))
+#L = ten
+#$(warning Externs.dashI($(L)): $(call Externs.dashI,$(L)))
+#$(warning Externs.dashL($(L)): $(call Externs.dashL,$(L)))
+#$(warning Externs.llink($(L)): $(call Externs.llink,$(L)))
+#$(error STOPPING)
+# TEEM_PTHREAD= TEEM_PNG= TEEM_LEVMAR=1 make --warn-undefined-variables
#######################################
-## Read in the makefiles for all the libraries, and the bins. Run-away
-## recursive inclusion is prevented by having set DEF_TARGETS.
-## Note: "include" is a directive, not a function, which eliminates
-## the possibility of iterating through the libraries, reading the
-## make file, and then setting variables based on what was just read.
+## Read in the makefiles for all the libraries, and the bins. Run-away recursive
+## inclusion is prevented by the Top.Included and other guards. Note: "include" is a
+## directive, not a function, which eliminates the possibility of iterating through the
+## libraries, reading the make file, and then setting variables based on what was just
+## read.
##
-## Lsave is used to preserve the value of L, in case we're being included
-## from a lower-level makefile which set a value for L. If we didn't put
-## L back the way it was, L would have to be set twice in the lower level
-## makefiles
+## Unfortunate trickiness: Lsave preserves the value of L, in case we're being included
+## from a lower-level GNUmakefile which set a value for L. If we didn't put L back the
+## way it was, L would have to be set twice in the lower level.
##
-INCLUDED = true
-ifneq (,$(L))
- ifeq (undefined,$(origin Lsave))
+ifdef L
+ ifndef Lsave
+ # "It's such a fine line, between stupid ...
Lsave := $(L)
endif
endif
-include $(foreach LIB,$(LIBS),$(TEEM_SRC)/$(LIB)/GNUmakefile)
-ifneq (,$(Lsave))
+include $(foreach LIB,$(Libs) bin,$(TeemSrc)/$(LIB)/GNUmakefile)
+ifdef Lsave
+ # ... and clever"
L := $(Lsave)
- INCLUDED =
-else
- # Lsave wasn't set, which means that make was invoked on this file,
- # and since the library make files do not include the bin makefile,
- # we do so now
- include $(TEEM_SRC)/bin/GNUmakefile
endif
-## megalibs: libteem.a and libteem.$(TEEM_SHEXT)
-##
-megalibs : $(foreach ext,$(LIBEXTS),$(LDEST)/libteem.$(ext))
-$(LDEST)/libteem.a : $(foreach lib,$(LIBS),$(call objs.dev,$(lib)))
- $(AR) $(ARFLAGS) $@ $^
-ifdef TEEM_SHEXT
-$(LDEST)/libteem.$(TEEM_SHEXT) : $(foreach lib,$(LIBS),$(call objs.dev,$(lib)))
- $(LD) -o $@ \
- $(if $(TEEM_DEST),$(if $(SHARED_LINK_NAME),$(SHARED_LINK_NAME)$@,),) \
- $(LDFLAGS) $(LPATH) $^ \
- $(foreach X,$(xterns),$(TEEM_$(X)_LPATH)) \
- $(foreach X,$(xterns),$($(X).LINK))
-endif
-unmegalibs:
- $(RM) $(foreach ext,$(LIBEXTS),$(LDEST)/libteem.$(ext))
-
-include $(TEEM_SRC)/make/win32.mk
+endif # ifndef Top.Included
Modified: teem/trunk/src/air/GNUmakefile
===================================================================
--- teem/trunk/src/air/GNUmakefile 2025-08-27 21:42:50 UTC (rev 7328)
+++ teem/trunk/src/air/GNUmakefile 2025-08-28 05:17:10 UTC (rev 7329)
@@ -17,44 +17,39 @@
# along with this library; if not, see <https://www.gnu.org/licenses/>.
#
-#### Library name
-####
-####
-L := air
-####
-####
-####
+# boilerplate: start include guard based on containing dir, then
+# set library name L, define default targets, include top-level GNUmakefile
+pardir := $(notdir $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST))))))
+ifndef $(pardir).Included
+######## HERE is where L is set to library name
+L := $(pardir)
+$(L).Included := yes
+TeemRoot ?= ../..
+TeemSrc ?= ..
+ifndef DefaultTargets
+ DefaultTargets := yes
+ bild : $(L).bild
+ test : $(L).test
+ clean : $(L).clean
+endif # ifndef DefaultTargets
+.PHONY: $(TeemSrc)/GNUmakefile
+include $(TeemSrc)/GNUmakefile
-# boilerplate: default targets and include tricks
-TEEM_ROOT ?= ../..
-TEEM_SRC ?= ..
-ifeq (,$(DEF_TARGETS))
-DEF_TARGETS = true
-dev : $(L)/dev
-clean : $(L)/clean
-include ../GNUmakefile
-endif
-ifeq (,$($(L).SEEN))
-$(L).SEEN := true
-
-#### Describe library here
+#### Describe library L here
####
####
-$(L).NEED =
-$(L).PUBLIC_HEADERS = air.h
-$(L).PRIVATE_HEADERS = privateAir.h
-$(L).OBJS = 754.o randMT.o randJSF.o array.o miscAir.o parseAir.o math.o \
+$(L).Depends =
+$(L).PublicHdr = air.h
+$(L).PrivateHdr = privateAir.h
+$(L).Obj = 754.o randMT.o randJSF.o array.o miscAir.o parseAir.o math.o \
endianAir.o mop.o enum.o sane.o string.o threadAir.o heap.o
-$(L).TESTS = test/floatprint test/doubleprint test/tok \
- test/tmop test/tline test/fp test/trand test/trandJSF test/tmisc \
- test/bessy test/tarr test/texp test/logrice test/tprint
+$(L).Test = floatprint doubleprint tok tmop tline fp trand trandJSF tmisc \
+ bessy tarr texp logrice tprint
####
####
####
-# boilerplate: declare rules for this library
-include $(TEEM_SRC)/make/template.mk
-endif
-ifeq (,$(INCLUDED))
- include $(TEEM_SRC)/bin/GNUmakefile
-endif
+# boilerplate: declare rules for L via template, finish include guard
+.PHONY: $(TeemSrc)/make/template.mk
+include $(TeemSrc)/make/template.mk
+endif # ifndef $(L).Included
Modified: teem/trunk/src/alan/GNUmakefile
===================================================================
--- teem/trunk/src/alan/GNUmakefile 2025-08-27 21:42:50 UTC (rev 7328)
+++ teem/trunk/src/alan/GNUmakefile 2025-08-28 05:17:10 UTC (rev 7329)
@@ -17,40 +17,37 @@
# along with this library; if not, see <https://www.gnu.org/licenses/>.
#
-#### Library name
+# boilerplate: start include guard based on containing dir, then
+# set library name L, define default targets, include top-level GNUmakefile
+pardir := $(notdir $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST))))))
+ifndef $(pardir).Included
+######## HERE is where L is set to library name
+L := $(pardir)
+$(L).Included := yes
+TeemRoot ?= ../..
+TeemSrc ?= ..
+ifndef DefaultTargets
+ DefaultTargets := yes
+ bild : $(L).bild
+ test : $(L).test
+ clean : $(L).clean
+endif # ifndef DefaultTargets
+.PHONY: $(TeemSrc)/GNUmakefile
+include $(TeemSrc)/GNUmakefile
+
+#### Describe library L here
####
####
-L := alan
+$(L).Depends = air biff ell nrrd
+$(L).PublicHdr = alan.h
+$(L).PrivateHdr =
+$(L).Obj = methodsAlan.o enumsAlan.o coreAlan.o
+$(L).Test =
####
####
####
-# boilerplate: default targets and include tricks
-TEEM_ROOT ?= ../..
-TEEM_SRC ?= ..
-ifeq (,$(DEF_TARGETS))
-DEF_TARGETS = true
-dev : $(L)/dev
-clean : $(L)/clean
-include ../GNUmakefile
-endif
-ifeq (,$($(L).SEEN))
-$(L).SEEN := true
-
-#### Describe library here
-####
-$(L).NEED = air biff ell nrrd
-$(L).PUBLIC_HEADERS = alan.h
-$(L).PRIVATE_HEADERS =
-$(L).OBJS = methodsAlan.o enumsAlan.o coreAlan.o
-$(L).TESTS =
-####
-####
-####
-
-# boilerplate: declare rules for this library
-include $(TEEM_SRC)/make/template.mk
-endif
-ifeq (,$(INCLUDED))
- include $(TEEM_SRC)/bin/GNUmakefile
-endif
+# boilerplate: declare rules for L via template, finish include guard
+.PHONY: $(TeemSrc)/make/template.mk
+include $(TeemSrc)/make/template.mk
+endif # ifndef $(L).Included
Modified: teem/trunk/src/bane/GNUmakefile
===================================================================
--- teem/trunk/src/bane/GNUmakefile 2025-08-27 21:42:50 UTC (rev 7328)
+++ teem/trunk/src/bane/GNUmakefile 2025-08-28 05:17:10 UTC (rev 7329)
@@ -17,45 +17,41 @@
# along with this library; if not, see <https://www.gnu.org/licenses/>.
#
-#### Library name
-####
-####
-L := bane
-####
-####
-####
+# boilerplate: start include guard based on containing dir, then
+# set library name L, define default targets, include top-level GNUmakefile
+pardir := $(notdir $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST))))))
+ifndef $(pardir).Included
+######## HERE is where L is set to library name
+L := $(pardir)
+$(L).Included := yes
+TeemRoot ?= ../..
+TeemSrc ?= ..
+ifndef DefaultTargets
+ DefaultTargets := yes
+ bild : $(L).bild
+ test : $(L).test
+ clean : $(L).clean
+endif # ifndef DefaultTargets
+.PHONY: $(TeemSrc)/GNUmakefile
+include $(TeemSrc)/GNUmakefile
-# boilerplate: default targets and include tricks
-TEEM_ROOT ?= ../..
-TEEM_SRC ?= ..
-ifeq (,$(DEF_TARGETS))
-DEF_TARGETS = true
-dev : $(L)/dev
-clean : $(L)/clean
-include ../GNUmakefile
-endif
-ifeq (,$($(L).SEEN))
-$(L).SEEN := true
-
-#### Describe library here
+#### Describe library L here
####
####
-$(L).NEED = gage unrrdu nrrd biff air
-$(L).PUBLIC_HEADERS = bane.h
-$(L).PRIVATE_HEADERS = privateBane.h
-$(L).OBJS = defaultsBane.o rangeBane.o inc.o clip.o measr.o methodsBane.o \
+$(L).Depends = gage unrrdu nrrd biff air
+$(L).PublicHdr = bane.h
+$(L).PrivateHdr = privateBane.h
+$(L).Obj = defaultsBane.o rangeBane.o inc.o clip.o measr.o methodsBane.o \
valid.o trnsf.o scat.o hvol.o trex.o \
gkmsFlotsam.o \
gkmsHvol.o gkmsScat.o gkmsInfo.o gkmsPvg.o gkmsOpac.o \
gkmsMite.o gkmsTxf.o
-$(L).TESTS = test/tinfo test/sigma test/pos test/opac
+$(L).Test = tinfo sigma pos opac
####
####
####
-# boilerplate: declare rules for this library
-include $(TEEM_SRC)/make/template.mk
-endif
-ifeq (,$(INCLUDED))
- include $(TEEM_SRC)/bin/GNUmakefile
-endif
+# boilerplate: declare rules for L via template, finish include guard
+.PHONY: $(TeemSrc)/make/template.mk
+include $(TeemSrc)/make/template.mk
+endif # ifndef $(L).Included
Modified: teem/trunk/src/biff/GNUmakefile
===================================================================
--- teem/trunk/src/biff/GNUmakefile 2025-08-27 21:42:50 UTC (rev 7328)
+++ teem/trunk/src/biff/GNUmakefile 2025-08-28 05:17:10 UTC (rev 7329)
@@ -17,41 +17,37 @@
# along with this library; if not, see <https://www.gnu.org/licenses/>.
#
-#### Library name
-####
-####
-L := biff
-####
-####
-####
+# boilerplate: start include guard based on containing dir, then
+# set library name L, define default targets, include top-level GNUmakefile
+pardir := $(notdir $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST))))))
+ifndef $(pardir).Included
+######## HERE is where L is set to library name
+L := $(pardir)
+$(L).Included := yes
+TeemRoot ?= ../..
+TeemSrc ?= ..
+ifndef DefaultTargets
+ DefaultTargets := yes
+ bild : $(L).bild
+ test : $(L).test
+ clean : $(L).clean
+endif # ifndef DefaultTargets
+.PHONY: $(TeemSrc)/GNUmakefile
+include $(TeemSrc)/GNUmakefile
-# boilerplate: default targets and include tricks
-TEEM_ROOT ?= ../..
-TEEM_SRC ?= ..
-ifeq (,$(DEF_TARGETS))
-DEF_TARGETS = true
-dev : $(L)/dev
-clean : $(L)/clean
-include ../GNUmakefile
-endif
-ifeq (,$($(L).SEEN))
-$(L).SEEN := true
-
-#### Describe library here
+#### Describe library L here
####
####
-$(L).NEED = air
-$(L).PUBLIC_HEADERS = biff.h
-$(L).PRIVATE_HEADERS = privateBiff.h
-$(L).OBJS = biffmsg.o biffbiff.o
-$(L).TESTS = test/test
+$(L).Depends = air
+$(L).PublicHdr = biff.h
+$(L).PrivateHdr = privateBiff.h
+$(L).Obj = biffmsg.o biffbiff.o
+$(L).Test = test
####
####
####
-# boilerplate: declare rules for this library
-include $(TEEM_SRC)/make/template.mk
-endif
-ifeq (,$(INCLUDED))
- include $(TEEM_SRC)/bin/GNUmakefile
-endif
+# boilerplate: declare rules for L via template, finish include guard
+.PHONY: $(TeemSrc)/make/template.mk
+include $(TeemSrc)/make/template.mk
+endif # ifndef $(L).Included
Modified: teem/trunk/src/bin/GNUmakefile
===================================================================
--- teem/trunk/src/bin/GNUmakefile 2025-08-27 21:42:50 UTC (rev 7328)
+++ teem/trunk/src/bin/GNUmakefile 2025-08-28 05:17:10 UTC (rev 7329)
@@ -17,117 +17,89 @@
# along with this library; if not, see <https://www.gnu.org/licenses/>.
#
-#### Name of the library goes here.
-####
-####
-L := bin
-####
-#### ha ha actually we're not a library at all ...
-####
-
-# boilerplate: default targets (except usable) and include tricks
-TEEM_ROOT ?= ../..
-TEEM_SRC ?= ..
-ifeq (,$(DEF_TARGETS))
-DEF_TARGETS = true
-dev : $(L)/dev
-clean : $(L)/clean
-include ../GNUmakefile
+# boilerplate: default targets, include, and guarding per-"lib" rules
+ifndef bin.Included
+TeemRoot ?= ../..
+TeemSrc ?= ..
+ifndef DefaultTargets
+ DefaultTargets := yes
+ bild : bin.bild
+ clean : bin.clean
endif
-ifeq (,$($(L).SEEN))
-$(L).SEEN := true
+.PHONY: $(TeemSrc)/GNUmakefile
+include $(TeemSrc)/GNUmakefile
-#### By the ordering and guarding of includes, this will ALWAYS be the
-#### last "library" makefile to be parsed, regardless of the directory
-#### in which make started.
+#### By the ordering and guarding of includes, this will ALWAYS be the last "library"
+#### makefile to be parsed, regardless of the directory in which make started.
-## BINS: all the command-line executables associated with teem
+## Bins: all the command-line executables associated with teem
##
-BINS = airSanity cubic nrrdSanity overrgb emap talkweb \
- unu pprobe vprobe gprobe qbert mrender miter gkms ungantry ilk \
- tend spots ninspect deconv puller
+Bins := airSanity nrrdSanity overrgb talkweb unu cubic qbert ilk \
+ emap gkms ungantry spots tend miter mrender pprobe vprobe gprobe \
+ deconv puller
-## _binD(bins): list of development locations for given bins
-## (With TeemV2 simplification, there is no "install" anything anymore)
+## BinsBild: full paths to all built and "installed" binaries
##
-_binD = $(foreach bin,$(1),$(TEEM_SRC)/bin/$(bin))
+#$(warning BinsBild := $(foreach bin,$(Bins),$(BinPath)/$(bin)))
+BinsBild := $(foreach bin,$(Bins),$(BinPath)/$(bin))
-## BINS.DEV: full paths to development versions
-##
-BINS.DEV := $(call _binD,$(BINS))
-
## Entry-point targets for binaries.
##
-bin/dev: $(BINS.DEV)
-bin/clean:
- $(RM) $(addsuffix $(DOTEXE),$(BINS.DEV))
+#$(warning bin.bild: $(BinsBild))
+bin.bild: $(BinsBild)
+bin.clean:
+ $(RM) $(BinsBild)
+ifdef LITTER
+ $(RM) -r $(foreach bin,$(BinsBild),$(bin)$(LITTER))
+endif
-## All the prerequisite usables of the bins, **RECURSIVELY EXPANDED** (or not? since
-## things here are depending on meet, and yet not all Teem libraries are listed here).
-## The calls to need() will work correctly because we've gotten here only after going
-## through all the other library makesfiles. The arguments to need() are libraries for
-## which we need a header and/or libraries we need to link against.
+## Each bin needs to know the libraries it immediately depends on.
+## We do *not* need to manually find the transitive closure here
##
-airSanity.need = $(call meneed,air)
-cubic.need = $(call meneed,ell)
-nrrdSanity.need = $(call meneed,nrrd biff)
-undos.need = $(call meneed,hest air)
-overrgb.need = $(call meneed,nrrd hest biff air)
-qbert.need = $(call meneed,bane gage nrrd hest air)
-ilk.need = $(call meneed,moss unrrdu nrrd ell biff hest air)
-emap.need = $(call meneed,limn nrrd ell biff hest air)
-gkms.need = $(call meneed,bane nrrd biff air)
-ninspect.need = $(call meneed,nrrd biff hest air)
-unu.need = $(call meneed,unrrdu nrrd biff hest air)
-miter.need = $(call meneed,mite hoover limn nrrd ell biff air)
-ungantry.need = $(call meneed,gage nrrd biff hest air)
-talkweb.need = $(call meneed,nrrd biff hest air)
-tend.need = $(call meneed,ten limn gage dye unrrdu nrrd ell biff air)
-mrender.need = $(call meneed,meet ten hoover limn gage nrrd biff hest air)
-vprobe.need = $(call meneed,meet ten limn gage nrrd ell biff hest air)
-gprobe.need = $(call meneed,meet ten limn gage nrrd ell biff hest air)
-deconv.need = $(call meneed,meet ten limn gage nrrd ell biff hest air)
-pprobe.need = $(call meneed,meet ten limn gage nrrd ell biff hest air)
-spots.need = $(call meneed,alan nrrd ell biff hest air)
-puller.need = $(call meneed,meet pull ten gage nrrd ell biff hest air)
+# HEY should be generating this by some sort of grep on each bin.c
+airSanity.Depends := air
+nrrdSanity.Depends := nrrd biff
+overrgb.Depends := nrrd hest biff air
+talkweb.Depends := nrrd biff hest air
+unu.Depends := unrrdu nrrd biff hest air
+cubic.Depends := ell
+qbert.Depends := bane gage nrrd hest air
+ilk.Depends := moss unrrdu nrrd ell biff hest air
+emap.Depends := limn nrrd ell biff hest air
+gkms.Depends := bane nrrd biff air
+ungantry.Depends := gage nrrd biff hest air
+spots.Depends := alan nrrd ell biff hest air
+tend.Depends := ten limn gage dye unrrdu nrrd ell biff air
+miter.Depends := mite hoover limn nrrd ell biff air
+mrender.Depends := meet
+pprobe.Depends := meet
+vprobe.Depends := meet
+gprobe.Depends := meet
+deconv.Depends := meet
+puller.Depends := meet
-## Old: "We need some way of expressing the fact that a given binary (install and dev)
-## depends on the usable of its top dependency."
-## Problem: Its not sufficient to use the "top dependency" because the dependencies are
-## not strict subsets/supersets: mrender's "top" dependency is hoover, but hoover doesn't
-## depend on gage, which mrender needs
-##
-$(call _binDI,airSanity) : $(call used,$(airSanity.need))
-$(call _binDI,cubic) : $(call used,$(cubic.need))
-$(call _binDI,nrrdSanity) : $(call used,$(nrrdSanity.need))
-$(call _binDI,undos) : $(call used,$(undos.need))
-$(call _binDI,overrgb) : $(call used,$(overrgb.need))
-$(call _binDI,qbert) : $(call used,$(qbert.need))
-$(call _binDI,ilk) : $(call used,$(ilk.need))
-$(call _binDI,emap) : $(call used,$(emap.need))
-$(call _binDI,vprobe) : $(call used,$(vprobe.need))
-$(call _binDI,gprobe) : $(call used,$(gprobe.need))
-$(call _binDI,deconv) : $(call used,$(deconv.need))
-$(call _binDI,pprobe) : $(call used,$(pprobe.need))
-$(call _binDI,gkms) : $(call used,$(gkms.need))
-$(call _binDI,ninspect) : $(call used,$(ninspect.need))
-$(call _binDI,unu) : $(call used,$(unu.need))
-$(call _binDI,mrender) : $(call used,$(mrender.need))
-$(call _binDI,miter) : $(call used,$(miter.need))
-$(call _binDI,ungantry) : $(call used,$(ungantry.need))
-$(call _binDI,talkweb) : $(call used,$(talkweb.need))
-$(call _binDI,tend) : $(call used,$(tend.need))
-$(call _binDI,spots) : $(call used,$(spots.need))
-$(call _binDI,puller) : $(call used,$(puller.need))
+# Binary B depends on building the libraries it depends on (and we let
+# make figure out the transitive closure), but/and,
+# when linking binary B we need to know all (the transitive closure of)
+# the libraries that B depends on, and we only want to compute that once,
+# so we save it in a target-specific variable B.needs
+# We express both inside a multi-line function:
+#$(warning $(BinPath)/$1 : $(foreach lib,$($(1).Depends),$(lib).bild))
+#$(warning $(BinPath)/$1 : $1.needs := $(sort $(foreach lib,$($(1).Depends),$($(lib).MeNeed))))
+define bin-deps
+$(BinPath)/$1 : $(foreach lib,$($(1).Depends),$(lib).bild)
+$(BinPath)/$1 : $1.needs := $(sort $(foreach lib,$($(1).Depends),$($(lib).MeNeed)))
+endef
-## How to make bins.dev: link against the same libraries and include the same
-## (installed) headers, so the commands aren't actually any different ...
+# For each binary B, state B's library dependencies, and compute B.needs
+$(foreach bin,$(Bins),$(eval $(call bin-deps,$(bin))))
+
+## How to make binary B from B.c
##
-$(BDEST)/% : $(TEEM_SRC)/bin/%.c
- $(P) $(CC) $(CFLAGS) $(BIN_CFLAGS) $(IPATH) -o $@ $< \
- $(LPATH) $(call link,$($(notdir $@).need)) \
- $(call xtern.Lpath,$($(notdir $@).need)) \
- $(call xtern.link,$($(notdir $@).need)) -lm
+$(BinPath)/% : $(TeemSrc)/bin/%.c
+ $(CC) $(CFLAGS) $(BIN_CFLAGS) $(dashI) -o $@ $< \
+ $(dashL) $(call llink,$($(notdir $@).needs)) \
+ $(call Externs.dashL,$($(notdir $@).needs)) $(call Externs.llink,$($(notdir $@).needs)) -lm
# we're not a library; template.mk doesn't apply to us
-endif
+endif # ifndef bin.Included
Modified: teem/trunk/src/coil/GNUmakefile
===================================================================
--- teem/trunk/src/coil/GNUmakefile 2025-08-27 21:42:50 UTC (rev 7328)
+++ teem/trunk/src/coil/GNUmakefile 2025-08-28 05:17:10 UTC (rev 7329)
@@ -17,42 +17,39 @@
# along with this library; if not, see <https://www.gnu.org/licenses/>.
#
-#### Library name
+# boilerplate: start include guard based on containing dir, then
+# set library name L, define default targets, include top-level GNUmakefile
+pardir := $(notdir $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST))))))
+ifndef $(pardir).Included
+######## HERE is where L is set to library name
+L := $(pardir)
+$(L).Included := yes
+TeemRoot ?= ../..
+TeemSrc ?= ..
+ifndef DefaultTargets
+ DefaultTargets := yes
+ bild : $(L).bild
+ test : $(L).test
+ clean : $(L).clean
+endif # ifndef DefaultTargets
+.PHONY: $(TeemSrc)/GNUmakefile
+include $(TeemSrc)/GNUmakefile
+
+#### Describe library L here
####
####
-L := coil
-####
-####
-####
-
-# boilerplate: default targets and include tricks
-TEEM_ROOT ?= ../..
-TEEM_SRC ?= ..
-ifeq (,$(DEF_TARGETS))
-DEF_TARGETS = true
-dev : $(L)/dev
-clean : $(L)/clean
-include ../GNUmakefile
-endif
-ifeq (,$($(L).SEEN))
-$(L).SEEN := true
-
-#### Describe library here
-#### (ell for macros)
-####
-$(L).NEED = ten ell nrrd biff air
-$(L).PUBLIC_HEADERS = coil.h
-$(L).PRIVATE_HEADERS =
-$(L).OBJS = defaultsCoil.o enumsCoil.o scalarCoil.o tensorCoil.o \
+# (ell for macros)
+$(L).Depends = ten ell nrrd biff air
+$(L).PublicHdr = coil.h
+$(L).PrivateHdr =
+$(L).Obj = defaultsCoil.o enumsCoil.o scalarCoil.o tensorCoil.o \
realmethods.o methodsCoil.o coreCoil.o
-$(L).TESTS = test/coiler
+$(L).Test = coiler
####
####
####
-# boilerplate: declare rules for this library
-include $(TEEM_SRC)/make/template.mk
-endif
-ifeq (,$(INCLUDED))
- include $(TEEM_SRC)/bin/GNUmakefile
-endif
+# boilerplate: declare rules for L via template, finish include guard
+.PHONY: $(TeemSrc)/make/template.mk
+include $(TeemSrc)/make/template.mk
+endif # ifndef $(L).Included
Modified: teem/trunk/src/dye/GNUmakefile
===================================================================
--- teem/trunk/src/dye/GNUmakefile 2025-08-27 21:42:50 UTC (rev 7328)
+++ teem/trunk/src/dye/GNUmakefile 2025-08-28 05:17:10 UTC (rev 7329)
@@ -17,42 +17,38 @@
# along with this library; if not, see <https://www.gnu.org/licenses/>.
#
-#### Library name
+# boilerplate: start include guard based on containing dir, then
+# set library name L, define default targets, include top-level GNUmakefile
+pardir := $(notdir $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST))))))
+ifndef $(pardir).Included
+######## HERE is where L is set to library name
+L := $(pardir)
+$(L).Included := yes
+TeemRoot ?= ../..
+TeemSrc ?= ..
+ifndef DefaultTargets
+ DefaultTargets := yes
+ bild : $(L).bild
+ test : $(L).test
+ clean : $(L).clean
+endif # ifndef DefaultTargets
+.PHONY: $(TeemSrc)/GNUmakefile
+include $(TeemSrc)/GNUmakefile
+
+#### Describe library L here
####
####
-L := dye
+# (needs ell for macros)
+$(L).Depends = ell biff air
+$(L).PublicHdr = dye.h
+$(L).PrivateHdr =
+$(L).Obj = methodsDye.o convertDye.o
+$(L).Test = conv bow mchist iconv
####
####
####
-# boilerplate: default targets and include tricks
-TEEM_ROOT ?= ../..
-TEEM_SRC ?= ..
-ifeq (,$(DEF_TARGETS))
-DEF_TARGETS = true
-dev : $(L)/dev
-clean : $(L)/clean
-include ../GNUmakefile
-endif
-ifeq (,$($(L).SEEN))
-$(L).SEEN := true
-
-#### Describe library here
-#### (needs ell for macros)
-####
-$(L).NEED = ell biff air
-$(L).PUBLIC_HEADERS = dye.h
-$(L).PRIVATE_HEADERS =
-$(L).OBJS = methodsDye.o convertDye.o
-$(L).TESTS = test/conv test/bow test/mchist test/iconv
-
-####
-####
-####
-
-# boilerplate: declare rules for this library
-include $(TEEM_SRC)/make/template.mk
-endif
-ifeq (,$(INCLUDED))
- include $(TEEM_SRC)/bin/GNUmakefile
-endif
+# boilerplate: declare rules for L via template, finish include guard
+.PHONY: $(TeemSrc)/make/template.mk
+include $(TeemSrc)/make/template.mk
+endif # ifndef $(L).Included
Modified: teem/trunk/src/echo/GNUmakefile
===================================================================
--- teem/trunk/src/echo/GNUmakefile 2025-08-27 21:42:50 UTC (rev 7328)
+++ teem/trunk/src/echo/GNUmakefile 2025-08-28 05:17:10 UTC (rev 7329)
@@ -17,42 +17,38 @@
# along with this library; if not, see <https://www.gnu.org/licenses/>.
#
-#### Library name
-####
-####
-L := echo
-####
-####
-####
+# boilerplate: start include guard based on containing dir, then
+# set library name L, define default targets, include top-level GNUmakefile
+pardir := $(notdir $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST))))))
+ifndef $(pardir).Included
+######## HERE is where L is set to library name
+L := $(pardir)
+$(L).Included := yes
+TeemRoot ?= ../..
+TeemSrc ?= ..
+ifndef DefaultTargets
+ DefaultTargets := yes
+ bild : $(L).bild
+ test : $(L).test
+ clean : $(L).clean
+endif # ifndef DefaultTargets
+.PHONY: $(TeemSrc)/GNUmakefile
+include $(TeemSrc)/GNUmakefile
-# boilerplate: default targets and include tricks
-TEEM_ROOT ?= ../..
-TEEM_SRC ?= ..
-ifeq (,$(DEF_TARGETS))
-DEF_TARGETS = true
-dev : $(L)/dev
-clean : $(L)/clean
-include ../GNUmakefile
-endif
-ifeq (,$($(L).SEEN))
-$(L).SEEN := true
-
-#### Describe library here
+#### Describe library L here
####
####
-$(L).NEED = limn ell nrrd biff air
-$(L).PUBLIC_HEADERS = echo.h
-$(L).PRIVATE_HEADERS = privateEcho.h
-$(L).OBJS = enumsEcho.o methodsEcho.o objmethods.o bounds.o set.o model.o \
+$(L).Depends = limn ell nrrd biff air
+$(L).PublicHdr = echo.h
+$(L).PrivateHdr = privateEcho.h
+$(L).Obj = enumsEcho.o methodsEcho.o objmethods.o bounds.o set.o model.o \
matter.o intx.o sqd.o list.o color.o lightEcho.o renderEcho.o
-$(L).TESTS = test/test test/trend
+$(L).Test = test trend
####
####
####
-# boilerplate: declare rules for this library
-include $(TEEM_SRC)/make/template.mk
-endif
-ifeq (,$(INCLUDED))
- include $(TEEM_SRC)/bin/GNUmakefile
-endif
+# boilerplate: declare rules for L via template, finish include guard
+.PHONY: $(TeemSrc)/make/template.mk
+include $(TeemSrc)/make/template.mk
+endif # ifndef $(L).Included
Modified: teem/trunk/src/elf/GNUmakefile
===================================================================
--- teem/trunk/src/elf/GNUmakefile 2025-08-27 21:42:50 UTC (rev 7328)
+++ teem/trunk/src/elf/GNUmakefile 2025-08-28 05:17:10 UTC (rev 7329)
@@ -17,41 +17,37 @@
# along with this library; if not, see <https://www.gnu.org/licenses/>.
#
-#### Library name
-####
-####
-L := elf
-####
-####
-####
+# boilerplate: start include guard based on containing dir, then
+# set library name L, define default targets, include top-level GNUmakefile
+pardir := $(notdir $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST))))))
+ifndef $(pardir).Included
+######## HERE is where L is set to library name
+L := $(pardir)
+$(L).Included := yes
+TeemRoot ?= ../..
+TeemSrc ?= ..
+ifndef DefaultTargets
+ DefaultTargets := yes
+ bild : $(L).bild
+ test : $(L).test
+ clean : $(L).clean
+endif # ifndef DefaultTargets
+.PHONY: $(TeemSrc)/GNUmakefile
+include $(TeemSrc)/GNUmakefile
-# boilerplate: default targets and include tricks
-TEEM_ROOT ?= ../..
-TEEM_SRC ?= ..
-ifeq (,$(DEF_TARGETS))
-DEF_TARGETS = true
-dev : $(L)/dev
-clean : $(L)/clean
-include ../GNUmakefile
-endif
-ifeq (,$($(L).SEEN))
-$(L).SEEN := true
-
-#### Describe library here
+#### Describe library L here
####
####
-$(L).NEED = ten tijk limn ell nrrd air
-$(L).PUBLIC_HEADERS = elf.h
-$(L).PRIVATE_HEADERS =
-$(L).OBJS = ballStickElf.o ESHEstimElf.o glyphElf.o maximaElf.o
-$(L).TESTS =
+$(L).Depends = ten tijk limn ell nrrd air
+$(L).PublicHdr = elf.h
+$(L).PrivateHdr =
+$(L).Obj = ballStickElf.o ESHEstimElf.o glyphElf.o maximaElf.o
+$(L).Test =
####
####
####
-# boilerplate: declare rules for this library
-include $(TEEM_SRC)/make/template.mk
-endif
-ifeq (,$(INCLUDED))
- include $(TEEM_SRC)/bin/GNUmakefile
-endif
+# boilerplate: declare rules for L via template, finish include guard
+.PHONY: $(TeemSrc)/make/template.mk
+include $(TeemSrc)/make/template.mk
+endif # ifndef $(L).Included
Modified: teem/trunk/src/ell/GNUmakefile
===================================================================
--- teem/trunk/src/ell/GNUmakefile 2025-08-27 21:42:50 UTC (rev 7328)
+++ teem/trunk/src/ell/GNUmakefile 2025-08-28 05:17:10 UTC (rev 7329)
@@ -17,42 +17,37 @@
# along with this library; if not, see <https://www.gnu.org/licenses/>.
#
-#### Library name
-####
-####
-L := ell
-####
-####
-####
+# boilerplate: start include guard based on containing dir, then
+# set library name L, define default targets, include top-level GNUmakefile
+pardir := $(notdir $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST))))))
+ifndef $(pardir).Included
+######## HERE is where L is set to library name
+L := $(pardir)
+$(L).Included := yes
+TeemRoot ?= ../..
+TeemSrc ?= ..
+ifndef DefaultTargets
+ DefaultTargets := yes
+ bild : $(L).bild
+ test : $(L).test
+ clean : $(L).clean
+endif # ifndef DefaultTargets
+.PHONY: $(TeemSrc)/GNUmakefile
+include $(TeemSrc)/GNUmakefile
-# boilerplate: default targets and include tricks
-TEEM_ROOT ?= ../..
-TEEM_SRC ?= ..
-ifeq (,$(DEF_TARGETS))
-DEF_TARGETS = true
-dev : $(L)/dev
-clean : $(L)/clean
-include ../GNUmakefile
-endif
-ifeq (,$($(L).SEEN))
-$(L).SEEN := true
-
-#### Describe library here
+#### Describe library L here
####
####
-$(L).NEED = nrrd biff air
-$(L).PUBLIC_HEADERS = ell.h ellMacros.h
-$(L).PRIVATE_HEADERS =
-$(L).OBJS = cubicEll.o eigen.o miscEll.o vecEll.o mat.o quat.o genmat.o
-$(L).TESTS = test/sort3 test/invert test/tq test/wheel test/rot2aa \
- test/inter test/mmul test/es6
+$(L).Depends = nrrd biff air
+$(L).PublicHdr = ell.h ellMacros.h
+$(L).PrivateHdr =
+$(L).Obj = cubicEll.o eigen.o miscEll.o vecEll.o mat.o quat.o genmat.o
+$(L).Test = sort3 invert tq wheel rot2aa inter mmul es6
####
####
####
-# boilerplate: declare rules for this library
-include $(TEEM_SRC)/make/template.mk
-endif
-ifeq (,$(INCLUDED))
- include $(TEEM_SRC)/bin/GNUmakefile
-endif
+# boilerplate: declare rules for L via template, finish include guard
+.PHONY: $(TeemSrc)/make/template.mk
+include $(TeemSrc)/make/template.mk
+endif # ifndef $(L).Included
Modified: teem/trunk/src/gage/GNUmakefile
===================================================================
--- teem/trunk/src/gage/GNUmakefile 2025-08-27 21:42:50 UTC (rev 7328)
+++ teem/trunk/src/gage/GNUmakefile 2025-08-28 05:17:10 UTC (rev 7329)
@@ -17,46 +17,41 @@
# along with this library; if not, see <https://www.gnu.org/licenses/>.
#
-#### Library name
-####
-####
-L := gage
-####
-####
-####
+# boilerplate: start include guard based on containing dir, then
+# set library name L, define default targets, include top-level GNUmakefile
+pardir := $(notdir $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST))))))
+ifndef $(pardir).Included
+######## HERE is where L is set to library name
+L := $(pardir)
+$(L).Included := yes
+TeemRoot ?= ../..
+TeemSrc ?= ..
+ifndef DefaultTargets
+ DefaultTargets := yes
+ bild : $(L).bild
+ test : $(L).test
+ clean : $(L).clean
+endif # ifndef DefaultTargets
+.PHONY: $(TeemSrc)/GNUmakefile
+include $(TeemSrc)/GNUmakefile
-# boilerplate: default targets and include tricks
-TEEM_ROOT ?= ../..
-TEEM_SRC ?= ..
-ifeq (,$(DEF_TARGETS))
-DEF_TARGETS = true
-dev : $(L)/dev
-clean : $(L)/clean
-include ../GNUmakefile
-endif
-ifeq (,$($(L).SEEN))
-$(L).SEEN := true
-
-#### Describe library here
+#### Describe library L here
####
####
-$(L).NEED = ell nrrd biff air
-$(L).PUBLIC_HEADERS = gage.h
-$(L).PRIVATE_HEADERS = privateGage.h
-$(L).OBJS = defaultsGage.o miscGage.o scl.o kind.o \
+$(L).Depends = ell nrrd biff air
+$(L).PublicHdr = gage.h
+$(L).PrivateHdr = privateGage.h
+$(L).Obj = defaultsGage.o miscGage.o scl.o kind.o \
shape.o pvl.o update.o deconvolve.o \
print.o sclanswer.o sclprint.o sclfilter.o \
vecGage.o vecprint.o twovecGage.o st.o filter.o ctx.o \
stack.o stackBlur.o optimsig.o
-$(L).TESTS = test/ctfix test/demo test/vh test/aalias test/indx \
- test/genoptsig test/ssc test/maxes test/tplot
+$(L).Test = ctfix demo vh aalias indx genoptsig ssc maxes tplot
####
####
####
-# boilerplate: declare rules for this library
-include $(TEEM_SRC)/make/template.mk
-endif
-ifeq (,$(INCLUDED))
- include $(TEEM_SRC)/bin/GNUmakefile
-endif
+# boilerplate: declare rules for L via template, finish include guard
+.PHONY: $(TeemSrc)/make/template.mk
+include $(TeemSrc)/make/template.mk
+endif # ifndef $(L).Included
Modified: teem/trunk/src/hest/GNUmakefile
===================================================================
--- teem/trunk/src/hest/GNUmakefile 2025-08-27 21:42:50 UTC (rev 7328)
+++ teem/trunk/src/hest/GNUmakefile 2025-08-28 05:17:10 UTC (rev 7329)
@@ -17,42 +17,37 @@
# along with this library; if not, see <https://www.gnu.org/licenses/>.
#
-#### Library name
-####
-####
-L := hest
-####
-####
-####
+# boilerplate: start include guard based on containing dir, then
+# set library name L, define default targets, include top-level GNUmakefile
+pardir := $(notdir $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST))))))
+ifndef $(pardir).Included
+######## HERE is where L is set to library name
+L := $(pardir)
+$(L).Included := yes
+TeemRoot ?= ../..
+TeemSrc ?= ..
+ifndef DefaultTargets
+ DefaultTargets := yes
+ bild : $(L).bild
+ test : $(L).t...
[truncated message content] |
|
From: <kin...@us...> - 2025-08-27 21:42:51
|
Revision: 7328
http://sourceforge.net/p/teem/code/7328
Author: kindlmann
Date: 2025-08-27 21:42:50 +0000 (Wed, 27 Aug 2025)
Log Message:
-----------
re-wording some things
Modified Paths:
--------------
teem/trunk/src/CODING.txt
Modified: teem/trunk/src/CODING.txt
===================================================================
--- teem/trunk/src/CODING.txt 2025-08-26 22:55:16 UTC (rev 7327)
+++ teem/trunk/src/CODING.txt 2025-08-27 21:42:50 UTC (rev 7328)
@@ -23,7 +23,7 @@
}
Note:
-* No tabs, ever. (why: no two editors show them the same)
+* No tabs, ever. (why: no two editors necessarily show them the same)
* Two spaces per level of indentation
* In function definition (and only in definition), the function name
starts a new line (why: makes it trivial to use grep or ack to
@@ -242,7 +242,9 @@
* The tests in teem/Testing are slowly accumulating. Much of the effort in
ongoing Teem development will be in creating and strengthening tests.
-* Teem is 99.9% ANSI C89. The known ways in which it isn't conformant are:
+* Prior to TeemV2, Teem is 99.9% ANSI C89. For TeemV2 some libraries outside
+NrrdIO are starting to adopt C99 and C11, because of the improvements they offer.
+Aside from those, the known ways that Teem code isn't C89:
- using the "long long" type qualifier to generate 64-bit ints (on *nix,
and __int64 on Windows).
- various strings created at compile time, often via the automatic
@@ -285,11 +287,13 @@
is certainly unintentional within a function, but there are various math and
system calls with names that conflict with their use as variables or
parameters, whether or not the existing names are true blue ANSI C. Here are
-some that have been removed from Teem, starting with the most suprising: index:
-looks to be same as strchr, but in strings.h instead of string.h round: round
-double to integer y0, y1: along with j0, j1, jn, yn, these are for Bessel
-functions signal: basic unix process communication read: read from file
-descriptors; a system call exp, log2: math functions, oops
+some that have been removed from Teem, starting with the most suprising:
+index: looks to be same as strchr, but in strings.h instead of string.h
+round: round double to integer
+y0, y1: along with j0, j1, jn, yn, these are for Bessel functions
+signal: basic unix process communication
+read: read from file descriptors; a system call
+exp, log2: math functions, oops
* It would be nice if Teem can compile without warnings as C++ code; There are
two main issues:
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <kin...@us...> - 2025-08-26 22:55:17
|
Revision: 7327
http://sourceforge.net/p/teem/code/7327
Author: kindlmann
Date: 2025-08-26 22:55:16 +0000 (Tue, 26 Aug 2025)
Log Message:
-----------
restoring these files, since it was a mistake to remove them as long as the current CMakeLists.txt refers to them (they will likely be removed again once the new still-under-construction CMakeLists.txt is committed)
Added Paths:
-----------
teem/trunk/CMake/TeemConfig.cmake.in
teem/trunk/CMake/TeemUse.cmake
Added: teem/trunk/CMake/TeemConfig.cmake.in
===================================================================
--- teem/trunk/CMake/TeemConfig.cmake.in (rev 0)
+++ teem/trunk/CMake/TeemConfig.cmake.in 2025-08-26 22:55:16 UTC (rev 7327)
@@ -0,0 +1,64 @@
+#
+# Teem: Tools to process and visualize scientific data and images
+# Copyright (C) 2009--2019 University of Chicago
+# Copyright (C) 2008, 2007, 2006, 2005 Gordon Kindlmann
+# Copyright (C) 2004, 2003, 2002, 2001, 2000, 1999, 1998 University of Utah
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public License
+# (LGPL) as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+# The terms of redistributing and/or modifying this software also
+# include exceptions to the LGPL that facilitate static linking.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+# You should have received a copy of the GNU Lesser General Public License
+# along with this library; if not, see <https://www.gnu.org/licenses/>.
+#
+
+#-----------------------------------------------------------------------------
+#
+# TeemConfig.cmake - Teem CMake configuration file for external projects.
+#
+# This file is configured by Teem and used by the TeemUse.cmake module
+# to load Teem's settings for an external project.
+
+# The directory of TeemConfig.cmake is, by definition, Teem_DIR.
+# (this_dir == Teem_DIR)
+#
+get_filename_component(this_dir "${CMAKE_CURRENT_LIST_FILE}" PATH)
+get_filename_component(Teem_ROOT_DIR "${this_dir}/@Teem_CV_CONFIG_TO_ROOT@" ABSOLUTE)
+
+# CMake files required to build client applications that use Teem.
+set(Teem_BUILD_SETTINGS_FILE "@Teem_CV_BUILD_SETTINGS_FILE@")
+set(Teem_USE_FILE "@Teem_CV_USE_FILE@")
+
+# The Teem directories.
+set(Teem_EXECUTABLE_DIRS "@Teem_CV_EXECUTABLE_DIRS@")
+set(Teem_LIBRARY_DIRS "@Teem_CV_LIBRARY_DIRS@")
+set(Teem_INCLUDE_DIRS "@Teem_CV_INCLUDE_DIRS@")
+
+# The Teem libraries.
+set(Teem_LIBRARIES "@Teem_CV_BUILT_LIBRARIES@")
+
+# The C flags added by Teem to the cmake-configured flags.
+set(Teem_REQUIRED_C_FLAGS "@Teem_REQUIRED_C_FLAGS@")
+
+# The Teem version number
+set(Teem_VERSION_MAJOR "@Teem_VERSION_MAJOR@")
+set(Teem_VERSION_MINOR "@Teem_VERSION_MINOR@")
+set(Teem_VERSION_PATCH "@Teem_VERSION_PATCH@")
+
+# Is Teem using shared libraries?
+set(Teem_BUILD_SHARED_LIBS "@BUILD_SHARED_LIBS@")
+
+# The list of tools in teem
+set(Teem_TOOLS "@Teem_TOOLS@")
+
+# The Teem library dependencies.
+if(NOT TARGET teem)
+ include("@Teem_CV_LIBRARY_DEPENDS_FILE@")
+endif()
Added: teem/trunk/CMake/TeemUse.cmake
===================================================================
--- teem/trunk/CMake/TeemUse.cmake (rev 0)
+++ teem/trunk/CMake/TeemUse.cmake 2025-08-26 22:55:16 UTC (rev 7327)
@@ -0,0 +1,46 @@
+#
+# Teem: Tools to process and visualize scientific data and images
+# Copyright (C) 2009--2019 University of Chicago
+# Copyright (C) 2008, 2007, 2006, 2005 Gordon Kindlmann
+# Copyright (C) 2004, 2003, 2002, 2001, 2000, 1999, 1998 University of Utah
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public License
+# (LGPL) as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+# The terms of redistributing and/or modifying this software also
+# include exceptions to the LGPL that facilitate static linking.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+# You should have received a copy of the GNU Lesser General Public License
+# along with this library; if not, see <https://www.gnu.org/licenses/>.
+#
+
+if(NOT Teem_FOUND)
+ message(FATAL_ERROR "Something went wrong. You are including TeemUse.cmake but Teem was not found")
+endif()
+
+# Make Teem easier to use
+include_directories(${Teem_INCLUDE_DIRS})
+link_directories(${Teem_LIBRARY_DIRS})
+
+# Load the compiler settings used for Teem.
+if(Teem_BUILD_SETTINGS_FILE)
+ include(CMakeImportBuildSettings)
+ CMAKE_IMPORT_BUILD_SETTINGS(${Teem_BUILD_SETTINGS_FILE})
+endif()
+
+# Support static builds
+if(NOT Teem_BUILD_SHARED_LIBS)
+ add_definitions(-DTEEM_STATIC=1)
+endif()
+
+# Add compiler flags needed to use Teem.
+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${Teem_REQUIRED_C_FLAGS}")
+set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${Teem_REQUIRED_EXE_LINKER_FLAGS}")
+set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${Teem_REQUIRED_SHARED_LINKER_FLAGS}")
+set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${Teem_REQUIRED_MODULE_LINKER_FLAGS}")
+
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <kin...@us...> - 2025-08-26 17:35:54
|
Revision: 7326
http://sourceforge.net/p/teem/code/7326
Author: kindlmann
Date: 2025-08-26 17:35:53 +0000 (Tue, 26 Aug 2025)
Log Message:
-----------
more info
Modified Paths:
--------------
teem/trunk/built/README.txt
Modified: teem/trunk/built/README.txt
===================================================================
--- teem/trunk/built/README.txt 2025-08-22 19:19:25 UTC (rev 7325)
+++ teem/trunk/built/README.txt 2025-08-26 17:35:53 UTC (rev 7326)
@@ -2,7 +2,10 @@
sub-directories:
cygwin darwin.32 darwin.64 irix6.64 irix6.n32 linux.32 linux.amd64
linux.ia64 netbsd.32 netbsd.amd64 netbsd.ia64 solaris win32
-that were used as destinations for Teem's (non-CMake) GNUMake build system.
-With TeemV2 that was greatly simplified, so now the GNUMake build system puts
+that were used as destinations for Teem's (non-CMake) GNUmake build system,
+which was designed for settings where a wide variety of architectures are
+simultaneously using the same networked filesystem.
+
+For TeemV2, this was greatly simplified. Now the GNUmake build system puts
files right into this directory (creating obj/ bin/ include/ lib/ directories
as needed). This is still used for Teem development and debugging.
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <kin...@us...> - 2025-08-22 19:19:27
|
Revision: 7325
http://sourceforge.net/p/teem/code/7325
Author: kindlmann
Date: 2025-08-22 19:19:25 +0000 (Fri, 22 Aug 2025)
Log Message:
-----------
as long as the per-lib GNUmakefiles are so totally in flux, having this around is more confusing than valuable
Removed Paths:
-------------
teem/trunk/src/make/boiler.mk
Deleted: teem/trunk/src/make/boiler.mk
===================================================================
--- teem/trunk/src/make/boiler.mk 2025-08-22 05:59:20 UTC (rev 7324)
+++ teem/trunk/src/make/boiler.mk 2025-08-22 19:19:25 UTC (rev 7325)
@@ -1,62 +0,0 @@
-#
-# Teem: Tools to process and visualize scientific data and images
-# Copyright (C) 2009--2023 University of Chicago
-# Copyright (C) 2005--2008 Gordon Kindlmann
-# Copyright (C) 1998--2004 University of Utah
-#
-# This library is free software; you can redistribute it and/or modify it under the terms
-# of the GNU Lesser General Public License (LGPL) as published by the Free Software
-# Foundation; either version 2.1 of the License, or (at your option) any later version.
-# The terms of redistributing and/or modifying this software also include exceptions to
-# the LGPL that facilitate static linking.
-#
-# This library is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
-# You should have received a copy of the GNU Lesser General Public License
-# along with this library; if not, see <https://www.gnu.org/licenses/>.
-#
-
-
-#### (this is the template for the individual teem libraries)
-
-#### Name of the library goes here
-####
-####
-L :=
-####
-####
-####
-
-# boilerplate: default targets and include tricks
-ifeq (,$($(L).SEEN))
-$(L).SEEN := true
-TEEM_ROOT ?= ../..
-TEEM_SRC ?= ..
-ifeq (,$(DEF_TARGETS))
-dev : $(L).dev
-install : $(L).install
-usable : $(L).usable
-clean : $(L).clean
-clobber : $(L).clobber
-DEF_TARGETS = true
-endif
-ifeq (,$(INCLUDED))
-include ../GNUmakefile
-endif
-
-#### Describe library here
-####
-####
-$(L).NEED_LIBS =
-$(L).PUBLIC_HEADERS =
-$(L).PRIVATE_HEADERS =
-$(L).OBJS =
-$(L).TESTS =
-####
-####
-####
-
-# boilerplate: declare rules for this library
-include $(TEEM_ROOT)/src/make/template.mk
-endif
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <kin...@us...> - 2025-08-22 05:59:23
|
Revision: 7324
http://sourceforge.net/p/teem/code/7324
Author: kindlmann
Date: 2025-08-22 05:59:20 +0000 (Fri, 22 Aug 2025)
Log Message:
-----------
time to say goodbye these
Removed Paths:
-------------
teem/trunk/src/make/aix.mk
teem/trunk/src/make/cygwin.mk
teem/trunk/src/make/darwin.mk
teem/trunk/src/make/irix6.mk
teem/trunk/src/make/linux.mk
teem/trunk/src/make/netbsd.mk
teem/trunk/src/make/solaris.mk
teem/trunk/src/make/win32.mk
Deleted: teem/trunk/src/make/aix.mk
===================================================================
--- teem/trunk/src/make/aix.mk 2025-08-22 05:43:23 UTC (rev 7323)
+++ teem/trunk/src/make/aix.mk 2025-08-22 05:59:20 UTC (rev 7324)
@@ -1,34 +0,0 @@
-#
-# Teem: Tools to process and visualize scientific data and images
-# Copyright (C) 2009--2023 University of Chicago
-# Copyright (C) 2005--2008 Gordon Kindlmann
-# Copyright (C) 1998--2004 University of Utah
-#
-# This library is free software; you can redistribute it and/or modify it under the terms
-# of the GNU Lesser General Public License (LGPL) as published by the Free Software
-# Foundation; either version 2.1 of the License, or (at your option) any later version.
-# The terms of redistributing and/or modifying this software also include exceptions to
-# the LGPL that facilitate static linking.
-#
-# This library is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
-# You should have received a copy of the GNU Lesser General Public License
-# along with this library; if not, see <https://www.gnu.org/licenses/>.
-#
-
-
-TEEM_SHEXT =
-
-OPT_CFLAG ?= -O2 -qmaxmem=16384
-STATIC_CFLAG =
-SHARED_CFLAG = -Bdynamic
-SHARED_LDFLAG = -G
-ARCH_CFLAG =
-ARCH_LDFLAG =
-
-TEEM_ZLIB.IPATH ?=
-TEEM_ZLIB.LPATH ?=
-
-TEEM_BZIP2.IPATH ?=
-TEEM_BZIP2.LPATH ?=
Deleted: teem/trunk/src/make/cygwin.mk
===================================================================
--- teem/trunk/src/make/cygwin.mk 2025-08-22 05:43:23 UTC (rev 7323)
+++ teem/trunk/src/make/cygwin.mk 2025-08-22 05:59:20 UTC (rev 7324)
@@ -1,41 +0,0 @@
-#
-# Teem: Tools to process and visualize scientific data and images
-# Copyright (C) 2009--2023 University of Chicago
-# Copyright (C) 2005--2008 Gordon Kindlmann
-# Copyright (C) 1998--2004 University of Utah
-#
-# This library is free software; you can redistribute it and/or modify it under the terms
-# of the GNU Lesser General Public License (LGPL) as published by the Free Software
-# Foundation; either version 2.1 of the License, or (at your option) any later version.
-# The terms of redistributing and/or modifying this software also include exceptions to
-# the LGPL that facilitate static linking.
-#
-# This library is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
-# You should have received a copy of the GNU Lesser General Public License
-# along with this library; if not, see <https://www.gnu.org/licenses/>.
-#
-
-
-# Cygwin-free DLLs are not as easy to make as once thought, but at
-# some point I'll support Cygwin-using shared objects
-TEEM_SHEXT =
-
-CC = gcc
-DOTEXE = .exe
-
-OPT_CFLAG ?= -Wall -O2
-STATIC_CFLAG = -Wl,-Bstatic
-SHARED_CFLAG = -Wl,-Bdynamic
-SHARED_LDFLAG = -shared
-ARCH_CFLAG =
-ARCH_LDFLAG =
-
-SIGH = 1
-
-TEEM_ZLIB.IPATH ?=
-TEEM_ZLIB.LPATH ?=
-
-TEEM_BZIP2.IPATH ?=
-TEEM_BZIP2.LPATH ?=
Deleted: teem/trunk/src/make/darwin.mk
===================================================================
--- teem/trunk/src/make/darwin.mk 2025-08-22 05:43:23 UTC (rev 7323)
+++ teem/trunk/src/make/darwin.mk 2025-08-22 05:59:20 UTC (rev 7324)
@@ -1,56 +0,0 @@
-#
-# Teem: Tools to process and visualize scientific data and images
-# Copyright (C) 2008, 2007, 2006, 2005 Gordon Kindlmann
-# Copyright (C) 2004, 2003, 2002, 2001, 2000, 1999, 1998 University of Utah
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public License
-# (LGPL) as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-# The terms of redistributing and/or modifying this software also
-# include exceptions to the LGPL that facilitate static linking.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-# You should have received a copy of the GNU Lesser General Public License
-# along with this library; if not, see <https://www.gnu.org/licenses/>.
-#
-
-
-AR = libtool
-ARFLAGS = -static -o
-RANLIB = ranlib
-
-LD = gcc
-
-## for trying undefined behavior flagging -fsanitize=undefined
-OPT_CFLAG ?= -O0 -g
-CC = clang
-STATIC_CFLAG = -Wl,-prebind
-SHARED_CFLAG =
-SHARED_LDFLAG = -dynamic -dynamiclib -fno-common
-SHARED_INSTALL_NAME = -install_name
-
-ARCH_CFLAG = -W -Wall
-ARCH_LDFLAG =
-
-ifeq ($(SUBARCH),64)
- # -std=c90 -pedantic -Wno-long-long -Wno-overlength-strings -Wstrict-aliasing=2 -Wstrict-overflow=5
- # -Weverything -Wno-poison-system-directories -Wno-padded -Wno-format-nonliteral -Wno-float-equal -Wno-reserved-id-macro
- ARCH_CFLAG = -arch x86_64 -W -Wall -Wextra
-else
- ifeq ($(SUBARCH),32)
- ARCH_CFLAG = -W -Wall -arch i386
- else
- $(error darwin sub-architecture "$(SUBARCH)" not recognized)
- endif
-endif
-
-TEEM_ZLIB.IPATH ?=
-TEEM_ZLIB.LPATH ?=
-
-TEEM_BZIP2.IPATH ?=
-TEEM_BZIP2.LPATH ?=
-
Deleted: teem/trunk/src/make/irix6.mk
===================================================================
--- teem/trunk/src/make/irix6.mk 2025-08-22 05:43:23 UTC (rev 7323)
+++ teem/trunk/src/make/irix6.mk 2025-08-22 05:59:20 UTC (rev 7324)
@@ -1,47 +0,0 @@
-#
-# Teem: Tools to process and visualize scientific data and images
-# Copyright (C) 2009--2023 University of Chicago
-# Copyright (C) 2005--2008 Gordon Kindlmann
-# Copyright (C) 1998--2004 University of Utah
-#
-# This library is free software; you can redistribute it and/or modify it under the terms
-# of the GNU Lesser General Public License (LGPL) as published by the Free Software
-# Foundation; either version 2.1 of the License, or (at your option) any later version.
-# The terms of redistributing and/or modifying this software also include exceptions to
-# the LGPL that facilitate static linking.
-#
-# This library is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
-# You should have received a copy of the GNU Lesser General Public License
-# along with this library; if not, see <https://www.gnu.org/licenses/>.
-#
-
-
-TEEM_LITTER = so_locations
-TEEM_SHEXT = so
-SHARED_LINK_NAME = -rpath
-TEEM_CPP_ERROR_DIE = -diag_error 1035
-SHARED_RPATH = -rpath
-
-OPT_CFLAG ?= -O2
-STATIC_CFLAG = -Bstatic
-SHARED_CFLAG = -Bdynamic
-SHARED_LDFLAG = -shared
-ifeq ($(SUBARCH),n32)
- ARCH_CFLAG = -n32
- ARCH_LDFLAG = -n32
-else
- ifeq ($(SUBARCH),64)
- ARCH_CFLAG = -64
- ARCH_LDFLAG = -64
- else
- $(error irix6 sub-architecture "$(SUBARCH)" not recognized)
- endif
-endif
-
-TEEM_ZLIB.IPATH ?=
-TEEM_ZLIB.LPATH ?=
-
-TEEM_BZIP2.IPATH ?=
-TEEM_BZIP2.LPATH ?=
Deleted: teem/trunk/src/make/linux.mk
===================================================================
--- teem/trunk/src/make/linux.mk 2025-08-22 05:43:23 UTC (rev 7323)
+++ teem/trunk/src/make/linux.mk 2025-08-22 05:59:20 UTC (rev 7324)
@@ -1,50 +0,0 @@
-#
-# Teem: Tools to process and visualize scientific data and images
-# Copyright (C) 2009--2023 University of Chicago
-# Copyright (C) 2005--2008 Gordon Kindlmann
-# Copyright (C) 1998--2004 University of Utah
-#
-# This library is free software; you can redistribute it and/or modify it under the terms
-# of the GNU Lesser General Public License (LGPL) as published by the Free Software
-# Foundation; either version 2.1 of the License, or (at your option) any later version.
-# The terms of redistributing and/or modifying this software also include exceptions to
-# the LGPL that facilitate static linking.
-#
-# This library is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
-# You should have received a copy of the GNU Lesser General Public License
-# along with this library; if not, see <https://www.gnu.org/licenses/>.
-#
-
-
-TEEM_SHEXT = so
-
-OPT_CFLAG ?= -O2
-STATIC_CFLAG = -static
-SHARED_CFLAG = -shared
-SHARED_LDFLAG = -shared
-SHARED_RPATH = -Wl,-rpath -Wl,
-
-ifeq ($(SUBARCH),ia64)
- ARCH_CFLAG = -fPIC -W -Wall
- ARCH_LDFLAG =
-else
- ifeq ($(SUBARCH),amd64)
- ARCH_CFLAG = -fPIC -W -Wall
- ARCH_LDFLAG =
- else
- ifeq ($(SUBARCH),32)
- ARCH_CFLAG = -W -Wall
- ARCH_LDFLAG =
- else
- $(error linux sub-architecture "$(SUBARCH)" not recognized)
- endif
- endif
-endif
-
-TEEM_ZLIB.IPATH ?=
-TEEM_ZLIB.LPATH ?=
-
-TEEM_BZIP2.IPATH ?=
-TEEM_BZIP2.LPATH ?=
Deleted: teem/trunk/src/make/netbsd.mk
===================================================================
--- teem/trunk/src/make/netbsd.mk 2025-08-22 05:43:23 UTC (rev 7323)
+++ teem/trunk/src/make/netbsd.mk 2025-08-22 05:59:20 UTC (rev 7324)
@@ -1,51 +0,0 @@
-#
-# teem: Gordon Kindlmann's research software
-# Copyright (C) 2005 Gordon Kindlmann
-# Copyright (C) 2003, 2002, 2001, 2000, 1999, 1998 University of Utah
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-#
-#
-
-TEEM_SHEXT = so
-
-OPT_CFLAG ?= -O2
-STATIC_CFLAG = -Wl,-Bstatic
-SHARED_CFLAG = -Wl,-Bdynamic
-SHARED_LDFLAG = -shared
-SHARED_RPATH = -Wl,-rpath -Wl,
-
-ifeq ($(SUBARCH),ia64)
- ARCH_CFLAG = -fPIC -W -Wall
- ARCH_LDFLAG =
-else
- ifeq ($(SUBARCH),64)
- ARCH_CFLAG = -fPIC -W -Wall
- ARCH_LDFLAG =
- else
- ifeq ($(SUBARCH),32)
- ARCH_CFLAG = -W -Wall
- ARCH_LDFLAG =
- else
- $(error netbsd sub-architecture "$(SUBARCH)" not recognized)
- endif
- endif
-endif
-
-TEEM_ZLIB.IPATH ?=
-TEEM_ZLIB.LPATH ?=
-
-TEEM_BZIP2.IPATH ?=
-TEEM_BZIP2.LPATH ?=
Deleted: teem/trunk/src/make/solaris.mk
===================================================================
--- teem/trunk/src/make/solaris.mk 2025-08-22 05:43:23 UTC (rev 7323)
+++ teem/trunk/src/make/solaris.mk 2025-08-22 05:59:20 UTC (rev 7324)
@@ -1,33 +0,0 @@
-#
-# Teem: Tools to process and visualize scientific data and images
-# Copyright (C) 2009--2023 University of Chicago
-# Copyright (C) 2005--2008 Gordon Kindlmann
-# Copyright (C) 1998--2004 University of Utah
-#
-# This library is free software; you can redistribute it and/or modify it under the terms
-# of the GNU Lesser General Public License (LGPL) as published by the Free Software
-# Foundation; either version 2.1 of the License, or (at your option) any later version.
-# The terms of redistributing and/or modifying this software also include exceptions to
-# the LGPL that facilitate static linking.
-#
-# This library is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
-# You should have received a copy of the GNU Lesser General Public License
-# along with this library; if not, see <https://www.gnu.org/licenses/>.
-#
-
-TEEM_SHEXT = so
-
-OPT_CFLAG ?= -xO2
-STATIC_CFLAG = -Bstatic
-SHARED_CFLAG = -Bdynamic
-SHARED_LDFLAG = -G
-ARCH_CFLAG =
-ARCH_LDFLAG =
-
-TEEM_ZLIB.IPATH ?=
-TEEM_ZLIB.LPATH ?=
-
-TEEM_BZIP2.IPATH ?=
-TEEM_BZIP2.LPATH ?=
Deleted: teem/trunk/src/make/win32.mk
===================================================================
--- teem/trunk/src/make/win32.mk 2025-08-22 05:43:23 UTC (rev 7323)
+++ teem/trunk/src/make/win32.mk 2025-08-22 05:59:20 UTC (rev 7324)
@@ -1,182 +0,0 @@
-#
-# Teem: Tools to process and visualize scientific data and images
-# Copyright (C) 2009--2023 University of Chicago
-# Copyright (C) 2005--2008 Gordon Kindlmann
-# Copyright (C) 1998--2004 University of Utah
-#
-# This library is free software; you can redistribute it and/or modify it under the terms
-# of the GNU Lesser General Public License (LGPL) as published by the Free Software
-# Foundation; either version 2.1 of the License, or (at your option) any later version.
-# The terms of redistributing and/or modifying this software also include exceptions to
-# the LGPL that facilitate static linking.
-#
-# This library is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
-# You should have received a copy of the GNU Lesser General Public License
-# along with this library; if not, see <https://www.gnu.org/licenses/>.
-#
-
-# Windows project file stuff
-#
-# Makes project files for the teem dll, one for each teem binary, and
-# one for the workspace containing all these
-
-WIN32.DEST ?= ../win32/build
-WIN32.TOP ?= ..\\\\..\\\\
-WIN32.HEADERS ?= ../win32
-
-win32: win32.msvc71
-win32.clean: win32.msvc71.clean
-project: project.build.msvc71
-unproject: project.clean.msvc71
-project6: project.build.msvc6
-unproject6: project.clean.msvc6
-
-sortedObjs = $(sort $(foreach lib,$(LIBS),$(addsuffix /$(lib),$($(lib).OBJS))))
-flipSlash = $(WIN32.TOP)src\\\\$(notdir $(1))\\\\$(subst /,,$(dir $(1)))
-writeCmdFile = $(shell echo -n $(patsubst %.o,\\t\\t\\t\\\<File\\n\\t\\t\\t\\tRelativePath=\"%.c\"\\\>\\n\\t\\t\\t\\\<\\/File\\\>\\n,$(call flipSlash,$(1))) >> $(2))
-
-#write-var-to-file=$(strip $(shell rm -f $1)$(eval __a :=)$(foreach w,$($2),$(if $(filter $3,$(words $(__a))),$(shell echo -n "$(strip $(__a)) " >> $1)$(eval __a:=))$(eval __a +=$w))$(shell echo $(__a) >> $1))
-
-#
-# MS Visual Studio .NET 2003 project files
-
-project.build.msvc71: headers.copy teem.vcproj.build bins.vcproj.build
-
-project.clean.msvc71: headers.clean
- $(RM) $(WIN32.DEST)/*.vcproj
-
-teem.vcproj.build:
- @echo -n "Creating teem.vcproj..."
- @echo -n s/TEEMALLDOTC/ > cmd.ed
- $(foreach obj,$(sortedObjs),$(call writeCmdFile,$(obj),cmd2.ed))
- @cat cmd2.ed >> cmd.ed
- @rm -rf cmd2.ed
- @echo /g >> cmd.ed
-# @echo s/TEEMALLDOTC/$(patsubst %.o,\\t\\t\\t\\\<File\\n\\t\\t\\t\\tRelativePath=\"%.c\"\\\>\\n\\t\\t\\t\\\<\\/File\\\>\\n,$(foreach obj,$(sortedObjs),$(call flipSlash,$(obj))))/g > cmd.ed
- @echo s/TEEMALLDOTH/$(patsubst %.h,\\t\\t\\t\\\<File\\n\\t\\t\\t\\tRelativePath=\"%.h\"\\\>\\n\\t\\t\\t\\\<\\/File\\\>\\n,$(foreach lib,$(LIBS),$(addprefix $(WIN32.TOP)src\\\\$(lib)\\\\,$($(lib).PUBLIC_HEADERS) $($(lib).PRIVATE_HEADERS))))/g >> cmd.ed
- @echo s/TEEMALLINC/$(foreach lib,$(LIBS),\,$(WIN32.TOP)src\\\\$(lib))/g >> cmd.ed
- @echo "s/ \,/\,/g" >> cmd.ed
- @sed -f cmd.ed $(WIN32.DEST)/teem.vcproj.tmpl > $(WIN32.DEST)/teem.vcproj
- @unix2dos $(WIN32.DEST)/teem.vcproj 2> /dev/null
- @rm -rf cmd.ed
- @echo "done"
-
-bins.vcproj.build: $(foreach bin,$(BINS),teembin.$(bin).vcproj.build)
-
-teembin.%.vcproj.build: BIN = $(patsubst teembin.%.vcproj.build,%,$@)
-teembin.%.vcproj.build:
- @echo -n "Creating $(BIN).vcproj..."
- @echo s/TEEMBINNAME/$(BIN)/g > cmd.ed
- @echo s/TEEMALLINC/$(foreach lib,$(LIBS),\,$(WIN32.TOP)src\\\\$(lib))/g >> cmd.ed
- @echo "s/ \,/\,/g" >> cmd.ed
- @echo s/TEEMBINDOTC/\\t\\t\\t\\\<File\\n\\t\\t\\t\\tRelativePath=\"$(WIN32.TOP)src\\\\bin\\\\$(BIN).c\"\\\>\\n\\t\\t\\t\\\<\\/File\\\>\\n/g >> cmd.ed
- @sed -f cmd.ed $(WIN32.DEST)/teembin.vcproj.tmpl > $(WIN32.DEST)/$(BIN).vcproj
- @unix2dos $(WIN32.DEST)/$(BIN).vcproj 2> /dev/null
- @rm -rf cmd.ed
- @echo "done"
-
-# MS Visual Studio 6.0 project files
-
-project.build.msvc6: teem.dsp.build headers.copy teem.dsw.build bins.dsp.build
-
-project.clean.msvc6: headers.clean
- $(RM) $(WIN32.DEST)/*.dsp $(WIN32.DEST)/*.dsw $(WIN32.DEST)/*.plg
-
-teem.dsp.build:
- @echo -n "Creating teem.dsp..."
- @echo s/TEEMALLDOTC/$(patsubst %.o,\# Begin Source File\\n\\nSOURCE=%.c\\n\# End Source File\\n,$(foreach obj,$(sortedObjs),$(call flipSlash,$(obj))))/g > cmd.ed
- @echo s/TEEMALLDOTH/$(patsubst %.h,\# Begin Source File\\n\\nSOURCE=%.h\\n\# End Source File\\n,$(foreach lib,$(LIBS),$(addprefix $(WIN32.TOP)src\\\\$(lib)\\\\,$($(lib).PUBLIC_HEADERS) $($(lib).PRIVATE_HEADERS))))/g >> cmd.ed
- @echo s/TEEMALLINC/$(foreach lib,$(LIBS),\\/I \"$(WIN32.TOP)src\\\\$(lib)\")/g >> cmd.ed
- @echo "s/ #/#/g" >> cmd.ed
- @sed -f cmd.ed $(WIN32.DEST)/teem_shared.dsp.tmpl > $(WIN32.DEST)/teem_shared.dsp
- @sed -f cmd.ed $(WIN32.DEST)/teem_static.dsp.tmpl > $(WIN32.DEST)/teem_static.dsp
- @unix2dos $(WIN32.DEST)/teem_shared.dsp 2> /dev/null
- @unix2dos $(WIN32.DEST)/teem_static.dsp 2> /dev/null
- @rm -rf cmd.ed
- @echo "done"
-
-bins.dsp.build: $(foreach bin,$(BINS),teembin.$(bin).dsp.build)
-
-# NB: pattern-specific variable BIN is set once per binary
-teembin.%.dsp.build: BIN = $(patsubst teembin.%.dsp.build,%,$@)
-teembin.%.dsp.build:
- @echo -n "Creating $(BIN).dsp..."
- @echo s/TEEMBINNAME/$(BIN)/g > cmd.ed
- @echo s/TEEMALLINC/$(foreach lib,$(LIBS),\\/I \"$(WIN32.TOP)src\\\\$(lib)\")/g >> cmd.ed
- @echo s/TEEMBINDOTC/\# Begin Source File\\n\\nSOURCE=$(WIN32.TOP)src\\\\bin\\\\$(BIN).c\\n\# End Source File\\n/g >> cmd.ed
- @echo "s/ #/#/g" >> cmd.ed
- @sed -f cmd.ed $(WIN32.DEST)/teem_bin.dsp.tmpl > $(WIN32.DEST)/$(BIN).dsp
- @unix2dos $(WIN32.DEST)/$(BIN).dsp 2> /dev/null
- @rm -rf cmd.ed
- @echo "done"
-
-teem.dsw.build:
- @echo -n "Creating teem.dsw..."
- @echo s/TEEMBINPROJECT/$(foreach bin,$(BINS),\\nProject: \"$(bin)\"=.\\\\$(bin).dsp - Package Owner=\<4\>\\n\\nPackage=\<5\>\\n{{{\\n}}}\\n\\nPackage=\<4\>\\n{{{\\n\ \ \ \ Begin Project Dependency\\n\ \ \ \ Project_Dep_Name teem_static\\n\ \ \ \ End Project Dependency\\n}}}\\n\\n\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\\n)/g > cmd.ed
- @echo "s/ #/#/g" >> cmd.ed
- @sed -f cmd.ed $(WIN32.DEST)/teem.dsw.tmpl > $(WIN32.DEST)/teem.dsw
- @unix2dos $(WIN32.DEST)/teem.dsw 2> /dev/null
- @rm -rf cmd.ed
- @echo "done"
-
-# Headers
-
-headers.copy:
- @echo -n "Copying headers..."
- @mkdir -p $(WIN32.HEADERS)/include/teem
- @$(CP) $(foreach lib,$(LIBS),$(addprefix $(lib)/,$($(lib).PUBLIC_HEADERS))) $(WIN32.HEADERS)/include/teem
- @echo "done"
-
-headers.clean:
- $(RM) -r $(WIN32.HEADERS)/include/teem
-
-# Definitions file (obsolete)
-
-def: #$(WIN32.DEST)/teem.def
- @echo "Building teem.def is no longer necessary"
- @echo "Don't forget to #define TEEM_STATIC when using the static version"
-
-#$(WIN32.DEST)/teem.def: teem.dsp
-# @echo "Creating teem.def..."
-# @msdev $(WIN32.DEST)/teem_shared.dsp /make "teem_shared - Win32 Release" /clean
-# @-msdev $(WIN32.DEST)/teem_shared.dsp /make "teem_shared - Win32 Release" /build
-# @dlltool --export-all-symbols --output-def teem.def $(WIN32.DEST)/shared/release/*.obj
-# @grep -v '; dlltool' teem.def | grep -v '_real' | grep -v '??' | grep -v '_airThreadWin32Body' > $(WIN32.DEST)/teem.def
-# @rm teem.def
-# @-msdev $(WIN32.DEST)/teem_shared.dsp /make "teem_shared - Win32 Release" /clean
-# @echo "done"
-
-# MS Visual Studio .NET 2003 build/clean
-
-win32.msvc71: teem.vcproj.win32 $(foreach bin,$(BINS),teembin.$(bin).vcproj.win32)
-win32.msvc71.clean: teem.vcproj.win32.clean $(foreach bin,$(BINS),teembin.$(bin).vcproj.win32.clean)
-
-teem.vcproj.win32:
- @-devenv.com /build Release $(WIN32.DEST)/teem.vcproj
- @-devenv.com /build StaticRelease $(WIN32.DEST)/teem.vcproj
-
-teembin.%.vcproj.win32: BIN = $(patsubst teembin.%.vcproj.win32,%,$@)
-teembin.%.vcproj.win32:
- @-devenv.com /build StaticRelease $(WIN32.DEST)/$(BIN).vcproj
-
-teem.vcproj.win32.clean:
- $(RM) -r $(WIN32.DEST)/Release
- $(RM) -r $(WIN32.DEST)/StaticRelease
- @-devenv.com /clean Release $(WIN32.DEST)/teem.vcproj
- @-devenv.com /clean StaticRelease $(WIN32.DEST)/teem.vcproj
-
-teembin.%.vcproj.win32.clean: BIN = $(patsubst teembin.%.vcproj.win32.clean,%,$@)
-teembin.%.vcproj.win32.clean:
- $(RM) $(WIN32.DEST)/../lib/StaticRelease/$(BIN).lib
- $(RM) $(WIN32.DEST)/../lib/StaticRelease/$(BIN).exp
- @-devenv.com /clean StaticRelease $(WIN32.DEST)/$(BIN).vcproj
-
-# MS Visual Studio 6.0 build/clean
-
-win32.msvc6:
- @-msdev $(WIN32.DEST)/teem.dsw /make all /build
-
-win32.clean.msvc6:
- @-msdev $(WIN32.DEST)/teem.dsw /make all /clean
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <kin...@us...> - 2025-08-22 05:43:25
|
Revision: 7323
http://sourceforge.net/p/teem/code/7323
Author: kindlmann
Date: 2025-08-22 05:43:23 +0000 (Fri, 22 Aug 2025)
Log Message:
-----------
no longer reliably informative
Removed Paths:
-------------
teem/trunk/src/make/README.txt
Deleted: teem/trunk/src/make/README.txt
===================================================================
--- teem/trunk/src/make/README.txt 2025-08-21 07:07:41 UTC (rev 7322)
+++ teem/trunk/src/make/README.txt 2025-08-22 05:43:23 UTC (rev 7323)
@@ -1,66 +0,0 @@
-#
-# Teem: Tools to process and visualize scientific data and images
-# Copyright (C) 2009--2025 University of Chicago
-# Copyright (C) 2005--2008 Gordon Kindlmann
-# Copyright (C) 1998--2004 University of Utah
-#
-# This library is free software; you can redistribute it and/or modify it under the terms
-# of the GNU Lesser General Public License (LGPL) as published by the Free Software
-# Foundation; either version 2.1 of the License, or (at your option) any later version.
-# The terms of redistributing and/or modifying this software also include exceptions to
-# the LGPL that facilitate static linking.
-#
-# This library is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
-# You should have received a copy of the GNU Lesser General Public License
-# along with this library; if not, see <https://www.gnu.org/licenses/>.
-#
-
-(these reflect the simplification of non-CMake building done for TeemV2)
-
-=========================
-User-set environment variables which effect global things:
-=========================
-
-TEEM_ROOT: the top-level "teem" directory, under which are the directories where object,
- library, and include files will be installed. If not set, the top-level directory is
- taken to be "../..", when inside the source directory for the individual libraries
-
-=========================
-The variables that can be set by the individual library Makefile's
-=========================
-
-LIB: the name of the library being compiled. If this isn't set, the
- assumption is that there is no new library to compile, but simply
- a set of binaries which depend on other libraries
-
-LIB_BASENAME: the base name of the archive and shared library files;
- by default this is set to "lib$(LIB)", but setting this allows one
- to over-ride that.
-
-HEADERS: the "public" .h files for this library; these will be installed
-
-PRIV_HEADERS: .h files needed for this library, but not installed
-
-LIBOBJS: the .o files (created from .c files) which comprise this library
-
-TEST_BINS: executables which are used to debug a library, but which will
- not be installed
-
-BINS: executables which will be installed
-
-BINLIBS: all the libraries (-l<name> ...) against which $(BINS) and
- $(TEST_BINS) collectively depend, for example "-lnrrd -lbiff -lair"
- is used for unrrdu stuff. Unfortunately, warning messages of the
- sort " ... not used for resolving any symbol" are to be expected due
- to the current simplistic nature of the Teem makefiles
-
-IPATH, LDPATH: the "-I<dir>" and "-L<dir>" flags for the compiler and linker.
- Values set here will be suffixed by the common makefile
-
-LDLIBS: when making shared libraries, it is sometimes necessary to
- link against other libraries. $(LDLIBS) is the last argument to the
- $(LD) call which creates a shared library, and should be used like
- $(BINLIBS). $(LPATH) can be set with the "-L<dir." flags non-Teem
- libraries, the Teem library flags will be suffixed on.
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <kin...@us...> - 2025-08-21 07:07:42
|
Revision: 7322
http://sourceforge.net/p/teem/code/7322
Author: kindlmann
Date: 2025-08-21 07:07:41 +0000 (Thu, 21 Aug 2025)
Log Message:
-----------
this actually works now
Modified Paths:
--------------
teem/trunk/CMake/FindFFTW3.cmake
Modified: teem/trunk/CMake/FindFFTW3.cmake
===================================================================
--- teem/trunk/CMake/FindFFTW3.cmake 2025-08-21 06:18:13 UTC (rev 7321)
+++ teem/trunk/CMake/FindFFTW3.cmake 2025-08-21 07:07:41 UTC (rev 7322)
@@ -1,22 +1,54 @@
+#
+# Teem: Tools to process and visualize scientific data and images
+# Copyright (C) 2009--2025 University of Chicago
+# Copyright (C) 2005--2008 Gordon Kindlmann
+# Copyright (C) 1998--2004 University of Utah
+#
+# This library is free software; you can redistribute it and/or modify it under the terms
+# of the GNU Lesser General Public License (LGPL) as published by the Free Software
+# Foundation; either version 2.1 of the License, or (at your option) any later version.
+# The terms of redistributing and/or modifying this software also include exceptions to
+# the LGPL that facilitate static linking.
+#
+# This library is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+# You should have received a copy of the GNU Lesser General Public License
+# along with this library; if not, see <https://www.gnu.org/licenses/>.
+#
-find_path(FFTW3_INCLUDE_DIR fftw3.h
- /usr/local/include
- /usr/include
-)
+# Even though CMake already has a built-in FindFFTW3.cmake, it assumes that
+# fftw3 was installed locally via CMake, but that's not what e.g. Homebrew
+# or apt actually does, so find_package(FFTW3) can succeed but is not able
+# to define imported targets for use with target_link_libraries(FFTW3::fftw3)
+# This is a long-standing issue: https://github.com/FFTW/fftw3/issues/130
+# NOTE: the solution herein was written largely by ChatGPT
-find_library(FFTW3_LIBRARY fftw3
- /usr/lib
- /usr/local/lib
-)
+# Try the built-in one first (if available)
+if (NOT FFTW3_FOUND)
+ include(FindPackageHandleStandardArgs)
-set(FFTW3_FOUND FALSE)
-if(FFTW3_INCLUDE_DIR AND FFTW3_LIBRARY)
- set(FFTW3_LIBRARIES ${FFTW3_LIBRARY} )
- set(FFTW3_FOUND TRUE)
-endif()
+ find_path(FFTW3_INCLUDE_DIR
+ NAMES fftw3.h
+ HINTS ENV FFTW3_DIR
+ PATH_SUFFIXES include
+ )
-mark_as_advanced(
- FFTW3_INCLUDE_DIR
- FFTW3_LIBRARIES
- FFTW3_FOUND
+ find_library(FFTW3_LIBRARY
+ NAMES fftw3
+ HINTS ENV FFTW3_DIR
+ PATH_SUFFIXES lib
)
+
+ find_package_handle_standard_args(FFTW3
+ REQUIRED_VARS FFTW3_LIBRARY FFTW3_INCLUDE_DIR
+ )
+
+ if (FFTW3_FOUND AND NOT TARGET FFTW3::fftw3)
+ add_library(FFTW3::fftw3 UNKNOWN IMPORTED)
+ set_target_properties(FFTW3::fftw3 PROPERTIES
+ IMPORTED_LOCATION "${FFTW3_LIBRARY}"
+ INTERFACE_INCLUDE_DIRECTORIES "${FFTW3_INCLUDE_DIR}"
+ )
+ endif()
+endif()
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <kin...@us...> - 2025-08-21 06:18:14
|
Revision: 7321
http://sourceforge.net/p/teem/code/7321
Author: kindlmann
Date: 2025-08-21 06:18:13 +0000 (Thu, 21 Aug 2025)
Log Message:
-----------
description of (VERY UNFINISHED) non-CMake build organization
Modified Paths:
--------------
teem/trunk/README.txt
Modified: teem/trunk/README.txt
===================================================================
--- teem/trunk/README.txt 2025-08-21 06:16:59 UTC (rev 7320)
+++ teem/trunk/README.txt 2025-08-21 06:18:13 UTC (rev 7321)
@@ -75,11 +75,10 @@
* data/
Small reference datasets; more may be added for testing
-* arch/
- When using the old GNU make system, objects and binaries are put
- in the cygin, darwin.32, linux.32, etc, architecture-dependent
- subdirectories, with a name which exactly matches valid settings
- for the environment variable TEEM_ARCH. Within these directories are:
+* built/
+ The old GNU make system (non-CMake) puts things here:
+ * include/
+ the headers
* lib/
all libraries put both their static/archive (.a) and
shared/dynamic (.so) library files here (such as libnrrd.a)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <kin...@us...> - 2025-08-21 06:17:00
|
Revision: 7320
http://sourceforge.net/p/teem/code/7320
Author: kindlmann
Date: 2025-08-21 06:16:59 +0000 (Thu, 21 Aug 2025)
Log Message:
-----------
now installing of binary executables respects Teem_INSTALL_VERSIONED_SUBDIRS
Modified Paths:
--------------
teem/trunk/src/bin/CMakeLists.txt
Modified: teem/trunk/src/bin/CMakeLists.txt
===================================================================
--- teem/trunk/src/bin/CMakeLists.txt 2025-08-21 06:15:02 UTC (rev 7319)
+++ teem/trunk/src/bin/CMakeLists.txt 2025-08-21 06:16:59 UTC (rev 7320)
@@ -21,7 +21,7 @@
add_executable(${name} ${sources})
target_link_libraries(${name} teem)
install(TARGETS ${name}
- RUNTIME DESTINATION bin
+ RUNTIME DESTINATION ${BIN_INSTALL_DIR}
COMPONENT Runtime
)
set_target_properties(${name} PROPERTIES
@@ -41,7 +41,7 @@
CREATE_EXEC(puller puller.c)
CREATE_EXEC(tend tend.c)
-### For Teem v2, these were removed from compilation: they have no compelling
+### For TeemV2, these were removed from compilation: they have no compelling
### general purpose, for reasons indicated with further comments. No reason
### to delete the sources though; they can still be compiled by other means.
##
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <kin...@us...> - 2025-08-21 06:15:04
|
Revision: 7319
http://sourceforge.net/p/teem/code/7319
Author: kindlmann
Date: 2025-08-21 06:15:02 +0000 (Thu, 21 Aug 2025)
Log Message:
-----------
better spelling of TeemV2
Modified Paths:
--------------
teem/trunk/src/bin/puller-with-Deft.c
teem/trunk/src/bin/puller.c
teem/trunk/src/make/README.txt
teem/trunk/src/make/externals.mk
teem/trunk/src/nrrd/arraysNrrd.c
teem/trunk/src/pull/trace.c
Modified: teem/trunk/src/bin/puller-with-Deft.c
===================================================================
--- teem/trunk/src/bin/puller-with-Deft.c 2025-08-21 06:13:10 UTC (rev 7318)
+++ teem/trunk/src/bin/puller-with-Deft.c 2025-08-21 06:15:02 UTC (rev 7319)
@@ -17,7 +17,7 @@
along with this library; if not, see <https://www.gnu.org/licenses/>.
*/
-/* for Teem v2 the Deft stuff was removed from puller.c; but this
+/* for TeemV2 the Deft stuff was removed from puller.c; but this
file preserves it for posterity. */
/*
** NOTE: all the "#ifdef DEFT" directives refer to an FLTK2-based GUI
Modified: teem/trunk/src/bin/puller.c
===================================================================
--- teem/trunk/src/bin/puller.c 2025-08-21 06:13:10 UTC (rev 7318)
+++ teem/trunk/src/bin/puller.c 2025-08-21 06:15:02 UTC (rev 7319)
@@ -17,7 +17,7 @@
along with this library; if not, see <https://www.gnu.org/licenses/>.
*/
-/* for Teem v2 the Deft stuff was removed from this file; see
+/* for TeemV2 the Deft stuff was removed from this file; see
puller-with-Deft.c for that code */
#include <teem/pull.h>
Modified: teem/trunk/src/make/README.txt
===================================================================
--- teem/trunk/src/make/README.txt 2025-08-21 06:13:10 UTC (rev 7318)
+++ teem/trunk/src/make/README.txt 2025-08-21 06:15:02 UTC (rev 7319)
@@ -17,7 +17,7 @@
# along with this library; if not, see <https://www.gnu.org/licenses/>.
#
-(these reflect the simplification of non-CMake building done for Teem v2)
+(these reflect the simplification of non-CMake building done for TeemV2)
=========================
User-set environment variables which effect global things:
@@ -27,10 +27,6 @@
library, and include files will be installed. If not set, the top-level directory is
taken to be "../..", when inside the source directory for the individual libraries
-TEEM_LINK_SHARED: if set to "true" then binaries, when linked, will be linked with shared
- libraries, and not static libraries. If not set, we link against static libraries, in
- order to produce stand-alone-ish binaries
-
=========================
The variables that can be set by the individual library Makefile's
=========================
Modified: teem/trunk/src/make/externals.mk
===================================================================
--- teem/trunk/src/make/externals.mk 2025-08-21 06:13:10 UTC (rev 7318)
+++ teem/trunk/src/make/externals.mk 2025-08-21 06:15:02 UTC (rev 7319)
@@ -27,7 +27,7 @@
## set it, not to anything in particular). If external EXT is enabled during make, then
## TEEM_EXT will be defined as "1" during source file compilation.
##
-## For Teem v2, the TEEM_EXT_IPATH and TEEM_EXT_LPATH (e.g TEEM_ZLIB_IPATH and
+## For TeemV2, the TEEM_EXT_IPATH and TEEM_EXT_LPATH (e.g TEEM_ZLIB_IPATH and
## TEEM_ZLIB_LPATH) variables are changed to EXT.IPATH and EXT.LPATH, set here (since
## there are no longer multiple architectures to simultaneously support)
##
Modified: teem/trunk/src/nrrd/arraysNrrd.c
===================================================================
--- teem/trunk/src/nrrd/arraysNrrd.c 2025-08-21 06:13:10 UTC (rev 7318)
+++ teem/trunk/src/nrrd/arraysNrrd.c 2025-08-21 06:15:02 UTC (rev 7319)
@@ -73,7 +73,7 @@
0 /* nrrdTypeBlock: "for some reason we pretend that blocks are integers" is what this
used to say since ~2002 when this array was created (under the name nrrdTypeFixed[],
as opposed to floating point), but that was never justified or necessary (afaik).
- For 2023 Teem v2 hacking, GLK got annoyed that CC code in cc.c didn't immediately
+ For 2023 TeemV2 hacking, GLK got annoyed that CC code in cc.c didn't immediately
complain that nrrdTypeBloack was a useless type for output CC IDs. */
};
Modified: teem/trunk/src/pull/trace.c
===================================================================
--- teem/trunk/src/pull/trace.c 2025-08-21 06:13:10 UTC (rev 7318)
+++ teem/trunk/src/pull/trace.c 2025-08-21 06:15:02 UTC (rev 7319)
@@ -1082,7 +1082,7 @@
} else { \
airOneLine(file, line, AIR_STRLEN_MED + 1); \
}
- hackhack = nrrdStateVerboseIO; /* should be fixed in Teem v2 */
+ hackhack = nrrdStateVerboseIO; /* HEY should be fixed in TeemV2 */
nrrdStateVerboseIO = 0;
READ(vert);
READ(strn);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <kin...@us...> - 2025-08-21 06:13:12
|
Revision: 7318
http://sourceforge.net/p/teem/code/7318
Author: kindlmann
Date: 2025-08-21 06:13:10 +0000 (Thu, 21 Aug 2025)
Log Message:
-----------
starting to bring up-to-date with TeemV2
Modified Paths:
--------------
teem/trunk/src/release.txt
Modified: teem/trunk/src/release.txt
===================================================================
--- teem/trunk/src/release.txt 2025-08-21 06:12:23 UTC (rev 7317)
+++ teem/trunk/src/release.txt 2025-08-21 06:13:10 UTC (rev 7318)
@@ -43,7 +43,8 @@
and then again with -biff 3 to check on all biff usage
run src/_util/scan-defines.py
--1) finalize TEEM_VERSION* in air/air.h and airTeemReleaseDate in air/misc.c
+-1) finalize TEEM_VERSION* in air/air.h and CMakeLists.txt
+and airTeemReleaseDate in air/misc.c
and set airTeemReleaseDone to AIR_TRUE
-0.5) regenerate python wrappers in teem/python
@@ -65,6 +66,7 @@
(HEY: need to figure out using rsync to move things to sourceforge)
1) Make sure it works
+(these steps are ancient guidance, from before CMake, and before TeemV2 simplifications)
"make teem/dev teem/install" on every supported architecture,
and make sure Windows stuff also still works (if new files or
libraries were added)
@@ -91,8 +93,8 @@
4) Checkout a tree:
-"make teem/install" on all platforms ...
-(actually this is ancient guidance, from before CMake)
+Use CMake to try building and installing a variety of platforms ...
+(these steps are ancient guidance, from before CMake, and before TeemV2 simplifications)
rapture/ray/muse:
setenv TEEM_ARCH irix6.64
@@ -123,6 +125,7 @@
setenv TEEM_PNG_IPATH -I/usr/local/include
5) Create Unix-ish binary builds (without src or docs):
+(these steps are ancient guidance, from before CMake, and before TeemV2 simplifications)
for each TEEM_ARCH in:
irix6.n32 linux.ia64 linux.amd64 linux.32 cygwin solaris darwin.32 darwin.64
- ssh to some ARCH machine, copy teem-VERSION-src.tar.gz there if needed
@@ -130,7 +133,7 @@
compile into the distributed statically linked binaries
setenv VERSION <<<version>>>
tar xzvf ~/rel/teem-${VERSION}-src.tar.gz
-cd teem-${VERSION}-src; setenv TEEM_DEST `pwd`
+cd teem-${VERSION}-src; setenv TEEM_DEST `pwd` # HEY TEEM_DEST is gone for TeemV2
cd src; make; cd ..
mv src/LICENSE.txt .
yes | rm -rf README.txt aix cygwin darwin.32 darwin.64 irix6.64 \
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <kin...@us...> - 2025-08-21 06:12:25
|
Revision: 7317
http://sourceforge.net/p/teem/code/7317
Author: kindlmann
Date: 2025-08-21 06:12:23 +0000 (Thu, 21 Aug 2025)
Log Message:
-----------
better spelling of TeemV2
Modified Paths:
--------------
teem/trunk/src/air/754.c
Modified: teem/trunk/src/air/754.c
===================================================================
--- teem/trunk/src/air/754.c 2025-08-21 06:11:47 UTC (rev 7316)
+++ teem/trunk/src/air/754.c 2025-08-21 06:12:23 UTC (rev 7317)
@@ -101,7 +101,7 @@
*/
/*
-With Teem v2, GLK decided to drop configuration-time learning of, and compile-time
+With TeemV2, GLK decided to drop configuration-time learning of, and compile-time
handling of, "QNaNHiBit": the most significant bit (MSB) of the fraction bitfield in a
quiet (versus signalling) NaN.
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <kin...@us...> - 2025-08-21 06:11:49
|
Revision: 7316
http://sourceforge.net/p/teem/code/7316
Author: kindlmann
Date: 2025-08-21 06:11:47 +0000 (Thu, 21 Aug 2025)
Log Message:
-----------
still part-way through TeemV2 simplification of non-CMake building
Modified Paths:
--------------
teem/trunk/src/air/GNUmakefile
teem/trunk/src/alan/GNUmakefile
teem/trunk/src/bane/GNUmakefile
teem/trunk/src/biff/GNUmakefile
teem/trunk/src/bin/GNUmakefile
teem/trunk/src/coil/GNUmakefile
teem/trunk/src/dye/GNUmakefile
teem/trunk/src/echo/GNUmakefile
teem/trunk/src/elf/GNUmakefile
teem/trunk/src/ell/GNUmakefile
teem/trunk/src/gage/GNUmakefile
teem/trunk/src/hest/GNUmakefile
teem/trunk/src/hoover/GNUmakefile
teem/trunk/src/limn/GNUmakefile
teem/trunk/src/meet/GNUmakefile
teem/trunk/src/mite/GNUmakefile
teem/trunk/src/moss/GNUmakefile
teem/trunk/src/nrrd/GNUmakefile
teem/trunk/src/pull/GNUmakefile
teem/trunk/src/push/GNUmakefile
teem/trunk/src/seek/GNUmakefile
teem/trunk/src/ten/GNUmakefile
teem/trunk/src/tijk/GNUmakefile
teem/trunk/src/unrrdu/GNUmakefile
Modified: teem/trunk/src/air/GNUmakefile
===================================================================
--- teem/trunk/src/air/GNUmakefile 2025-08-21 05:55:23 UTC (rev 7315)
+++ teem/trunk/src/air/GNUmakefile 2025-08-21 06:11:47 UTC (rev 7316)
@@ -1,6 +1,6 @@
#
# Teem: Tools to process and visualize scientific data and images
-# Copyright (C) 2009--2023 University of Chicago
+# Copyright (C) 2009--2025 University of Chicago
# Copyright (C) 2005--2008 Gordon Kindlmann
# Copyright (C) 1998--2004 University of Utah
#
@@ -31,9 +31,7 @@
ifeq (,$(DEF_TARGETS))
DEF_TARGETS = true
dev : $(L)/dev
-install : $(L)/install
clean : $(L)/clean
-clobber : $(L)/clobber
include ../GNUmakefile
endif
ifeq (,$($(L).SEEN))
Modified: teem/trunk/src/alan/GNUmakefile
===================================================================
--- teem/trunk/src/alan/GNUmakefile 2025-08-21 05:55:23 UTC (rev 7315)
+++ teem/trunk/src/alan/GNUmakefile 2025-08-21 06:11:47 UTC (rev 7316)
@@ -1,6 +1,6 @@
#
# Teem: Tools to process and visualize scientific data and images
-# Copyright (C) 2009--2023 University of Chicago
+# Copyright (C) 2009--2025 University of Chicago
# Copyright (C) 2005--2008 Gordon Kindlmann
# Copyright (C) 1998--2004 University of Utah
#
@@ -31,9 +31,7 @@
ifeq (,$(DEF_TARGETS))
DEF_TARGETS = true
dev : $(L)/dev
-install : $(L)/install
clean : $(L)/clean
-clobber : $(L)/clobber
include ../GNUmakefile
endif
ifeq (,$($(L).SEEN))
@@ -44,9 +42,8 @@
$(L).NEED = air biff ell nrrd
$(L).PUBLIC_HEADERS = alan.h
$(L).PRIVATE_HEADERS =
-$(L).OBJS = methodsAlan.o enumsAlan.o coreAlan.o
-$(L).TESTS =
-
+$(L).OBJS = methodsAlan.o enumsAlan.o coreAlan.o
+$(L).TESTS =
####
####
####
Modified: teem/trunk/src/bane/GNUmakefile
===================================================================
--- teem/trunk/src/bane/GNUmakefile 2025-08-21 05:55:23 UTC (rev 7315)
+++ teem/trunk/src/bane/GNUmakefile 2025-08-21 06:11:47 UTC (rev 7316)
@@ -1,6 +1,6 @@
#
# Teem: Tools to process and visualize scientific data and images
-# Copyright (C) 2009--2023 University of Chicago
+# Copyright (C) 2009--2025 University of Chicago
# Copyright (C) 2005--2008 Gordon Kindlmann
# Copyright (C) 1998--2004 University of Utah
#
@@ -31,9 +31,7 @@
ifeq (,$(DEF_TARGETS))
DEF_TARGETS = true
dev : $(L)/dev
-install : $(L)/install
clean : $(L)/clean
-clobber : $(L)/clobber
include ../GNUmakefile
endif
ifeq (,$($(L).SEEN))
@@ -50,8 +48,7 @@
gkmsFlotsam.o \
gkmsHvol.o gkmsScat.o gkmsInfo.o gkmsPvg.o gkmsOpac.o \
gkmsMite.o gkmsTxf.o
-$(L).TESTS = test/tinfo test/sigma test/pos \
- test/opac
+$(L).TESTS = test/tinfo test/sigma test/pos test/opac
####
####
####
Modified: teem/trunk/src/biff/GNUmakefile
===================================================================
--- teem/trunk/src/biff/GNUmakefile 2025-08-21 05:55:23 UTC (rev 7315)
+++ teem/trunk/src/biff/GNUmakefile 2025-08-21 06:11:47 UTC (rev 7316)
@@ -1,6 +1,6 @@
#
# Teem: Tools to process and visualize scientific data and images
-# Copyright (C) 2009--2023 University of Chicago
+# Copyright (C) 2009--2025 University of Chicago
# Copyright (C) 2005--2008 Gordon Kindlmann
# Copyright (C) 1998--2004 University of Utah
#
@@ -31,9 +31,7 @@
ifeq (,$(DEF_TARGETS))
DEF_TARGETS = true
dev : $(L)/dev
-install : $(L)/install
clean : $(L)/clean
-clobber : $(L)/clobber
include ../GNUmakefile
endif
ifeq (,$($(L).SEEN))
Modified: teem/trunk/src/bin/GNUmakefile
===================================================================
--- teem/trunk/src/bin/GNUmakefile 2025-08-21 05:55:23 UTC (rev 7315)
+++ teem/trunk/src/bin/GNUmakefile 2025-08-21 06:11:47 UTC (rev 7316)
@@ -1,6 +1,6 @@
#
# Teem: Tools to process and visualize scientific data and images
-# Copyright (C) 2009--2023 University of Chicago
+# Copyright (C) 2009--2025 University of Chicago
# Copyright (C) 2005--2008 Gordon Kindlmann
# Copyright (C) 1998--2004 University of Utah
#
@@ -22,7 +22,7 @@
####
L := bin
####
-#### We're not a library at all actually ...
+#### ha ha actually we're not a library at all ...
####
# boilerplate: default targets (except usable) and include tricks
@@ -31,9 +31,7 @@
ifeq (,$(DEF_TARGETS))
DEF_TARGETS = true
dev : $(L)/dev
-install : $(L)/install
clean : $(L)/clean
-clobber : $(L)/clobber
include ../GNUmakefile
endif
ifeq (,$($(L).SEEN))
@@ -50,36 +48,25 @@
tend spots ninspect deconv puller
## _binD(bins): list of development locations for given bins
-## _binI(bins): list of install locations for given bins
-## _binDI(bins): list of install and development locations for given bins
+## (With TeemV2 simplification, there is no "install" anything anymore)
##
_binD = $(foreach bin,$(1),$(TEEM_SRC)/bin/$(bin))
-_binI = $(foreach bin,$(1),$(BDEST)/$(bin))
-_binDI = $(foreach bin,$(1),$(TEEM_SRC)/bin/$(bin) $(BDEST)/$(bin))
-## BINS.{DEV,INST}: full paths to development and install versions
+## BINS.DEV: full paths to development versions
##
BINS.DEV := $(call _binD,$(BINS))
-BINS.INST := $(call _binI,$(BINS))
-
-## Entry-point targets for binaries. There is no "usable" for
-## binaries, since they aren't libraries.
+## Entry-point targets for binaries.
##
bin/dev: $(BINS.DEV)
-bin/install: $(BINS.INST)
bin/clean:
$(RM) $(addsuffix $(DOTEXE),$(BINS.DEV))
-bin/clobber: bin/clean
- $(RM) $(addsuffix $(DOTEXE),$(BINS.INST))
-## All the prerequisite usables of the bins, **RECURSIVELY EXPANDED**
-## (or not? since things here are depending on meet, and yet not all
-## Teem libraries are listed here). The calls to need() will work
-## correctly because we've gotten here only after going through all
-## the other library makesfiles. The arguments to need() are
-## libraries for which we need a header and/or libraries we need to
-## link against.
+## All the prerequisite usables of the bins, **RECURSIVELY EXPANDED** (or not? since
+## things here are depending on meet, and yet not all Teem libraries are listed here).
+## The calls to need() will work correctly because we've gotten here only after going
+## through all the other library makesfiles. The arguments to need() are libraries for
+## which we need a header and/or libraries we need to link against.
##
airSanity.need = $(call meneed,air)
cubic.need = $(call meneed,ell)
@@ -104,12 +91,11 @@
spots.need = $(call meneed,alan nrrd ell biff hest air)
puller.need = $(call meneed,meet pull ten gage nrrd ell biff hest air)
-## Old: "We need some way of expressing the fact that a given binary
-## (install and dev) depends on the usable of its top dependency."
-## Problem: Its not sufficient to use the "top dependency" because the
-## dependencies are not strict subsets/supersets: mrender's "top"
-## dependency is hoover, but hoover doesn't depend on gage, which
-## mrender needs
+## Old: "We need some way of expressing the fact that a given binary (install and dev)
+## depends on the usable of its top dependency."
+## Problem: Its not sufficient to use the "top dependency" because the dependencies are
+## not strict subsets/supersets: mrender's "top" dependency is hoover, but hoover doesn't
+## depend on gage, which mrender needs
##
$(call _binDI,airSanity) : $(call used,$(airSanity.need))
$(call _binDI,cubic) : $(call used,$(cubic.need))
@@ -134,11 +120,10 @@
$(call _binDI,spots) : $(call used,$(spots.need))
$(call _binDI,puller) : $(call used,$(puller.need))
-## How to make bins.dev and bins.inst: both kinds link against the
-## same (installed) libraries and include the same (installed)
-## headers, so the commands aren't actually any different ...
+## How to make bins.dev: link against the same libraries and include the same
+## (installed) headers, so the commands aren't actually any different ...
##
-$(TEEM_SRC)/bin/% $(BDEST)/% : $(TEEM_SRC)/bin/%.c
+$(BDEST)/% : $(TEEM_SRC)/bin/%.c
$(P) $(CC) $(CFLAGS) $(BIN_CFLAGS) $(IPATH) -o $@ $< \
$(LPATH) $(call link,$($(notdir $@).need)) \
$(call xtern.Lpath,$($(notdir $@).need)) \
Modified: teem/trunk/src/coil/GNUmakefile
===================================================================
--- teem/trunk/src/coil/GNUmakefile 2025-08-21 05:55:23 UTC (rev 7315)
+++ teem/trunk/src/coil/GNUmakefile 2025-08-21 06:11:47 UTC (rev 7316)
@@ -1,6 +1,6 @@
#
# Teem: Tools to process and visualize scientific data and images
-# Copyright (C) 2009--2023 University of Chicago
+# Copyright (C) 2009--2025 University of Chicago
# Copyright (C) 2005--2008 Gordon Kindlmann
# Copyright (C) 1998--2004 University of Utah
#
@@ -31,9 +31,7 @@
ifeq (,$(DEF_TARGETS))
DEF_TARGETS = true
dev : $(L)/dev
-install : $(L)/install
clean : $(L)/clean
-clobber : $(L)/clobber
include ../GNUmakefile
endif
ifeq (,$($(L).SEEN))
Modified: teem/trunk/src/dye/GNUmakefile
===================================================================
--- teem/trunk/src/dye/GNUmakefile 2025-08-21 05:55:23 UTC (rev 7315)
+++ teem/trunk/src/dye/GNUmakefile 2025-08-21 06:11:47 UTC (rev 7316)
@@ -1,6 +1,6 @@
#
# Teem: Tools to process and visualize scientific data and images
-# Copyright (C) 2009--2023 University of Chicago
+# Copyright (C) 2009--2025 University of Chicago
# Copyright (C) 2005--2008 Gordon Kindlmann
# Copyright (C) 1998--2004 University of Utah
#
@@ -31,9 +31,7 @@
ifeq (,$(DEF_TARGETS))
DEF_TARGETS = true
dev : $(L)/dev
-install : $(L)/install
clean : $(L)/clean
-clobber : $(L)/clobber
include ../GNUmakefile
endif
ifeq (,$($(L).SEEN))
Modified: teem/trunk/src/echo/GNUmakefile
===================================================================
--- teem/trunk/src/echo/GNUmakefile 2025-08-21 05:55:23 UTC (rev 7315)
+++ teem/trunk/src/echo/GNUmakefile 2025-08-21 06:11:47 UTC (rev 7316)
@@ -1,6 +1,6 @@
#
# Teem: Tools to process and visualize scientific data and images
-# Copyright (C) 2009--2023 University of Chicago
+# Copyright (C) 2009--2025 University of Chicago
# Copyright (C) 2005--2008 Gordon Kindlmann
# Copyright (C) 1998--2004 University of Utah
#
@@ -31,9 +31,7 @@
ifeq (,$(DEF_TARGETS))
DEF_TARGETS = true
dev : $(L)/dev
-install : $(L)/install
clean : $(L)/clean
-clobber : $(L)/clobber
include ../GNUmakefile
endif
ifeq (,$($(L).SEEN))
@@ -46,7 +44,7 @@
$(L).PUBLIC_HEADERS = echo.h
$(L).PRIVATE_HEADERS = privateEcho.h
$(L).OBJS = enumsEcho.o methodsEcho.o objmethods.o bounds.o set.o model.o \
- matter.o intx.o sqd.o list.o color.o lightEcho.o renderEcho.o
+ matter.o intx.o sqd.o list.o color.o lightEcho.o renderEcho.o
$(L).TESTS = test/test test/trend
####
####
Modified: teem/trunk/src/elf/GNUmakefile
===================================================================
--- teem/trunk/src/elf/GNUmakefile 2025-08-21 05:55:23 UTC (rev 7315)
+++ teem/trunk/src/elf/GNUmakefile 2025-08-21 06:11:47 UTC (rev 7316)
@@ -1,6 +1,6 @@
#
# Teem: Tools to process and visualize scientific data and images
-# Copyright (C) 2009--2023 University of Chicago
+# Copyright (C) 2009--2025 University of Chicago
# Copyright (C) 2005--2008 Gordon Kindlmann
# Copyright (C) 1998--2004 University of Utah
#
@@ -31,9 +31,7 @@
ifeq (,$(DEF_TARGETS))
DEF_TARGETS = true
dev : $(L)/dev
-install : $(L)/install
clean : $(L)/clean
-clobber : $(L)/clobber
include ../GNUmakefile
endif
ifeq (,$($(L).SEEN))
Modified: teem/trunk/src/ell/GNUmakefile
===================================================================
--- teem/trunk/src/ell/GNUmakefile 2025-08-21 05:55:23 UTC (rev 7315)
+++ teem/trunk/src/ell/GNUmakefile 2025-08-21 06:11:47 UTC (rev 7316)
@@ -1,6 +1,6 @@
#
# Teem: Tools to process and visualize scientific data and images
-# Copyright (C) 2009--2023 University of Chicago
+# Copyright (C) 2009--2025 University of Chicago
# Copyright (C) 2005--2008 Gordon Kindlmann
# Copyright (C) 1998--2004 University of Utah
#
@@ -31,9 +31,7 @@
ifeq (,$(DEF_TARGETS))
DEF_TARGETS = true
dev : $(L)/dev
-install : $(L)/install
clean : $(L)/clean
-clobber : $(L)/clobber
include ../GNUmakefile
endif
ifeq (,$($(L).SEEN))
@@ -42,7 +40,7 @@
#### Describe library here
####
####
-$(L).NEED = nrrd biff air
+$(L).NEED = nrrd biff air
$(L).PUBLIC_HEADERS = ell.h ellMacros.h
$(L).PRIVATE_HEADERS =
$(L).OBJS = cubicEll.o eigen.o miscEll.o vecEll.o mat.o quat.o genmat.o
Modified: teem/trunk/src/gage/GNUmakefile
===================================================================
--- teem/trunk/src/gage/GNUmakefile 2025-08-21 05:55:23 UTC (rev 7315)
+++ teem/trunk/src/gage/GNUmakefile 2025-08-21 06:11:47 UTC (rev 7316)
@@ -1,6 +1,6 @@
#
# Teem: Tools to process and visualize scientific data and images
-# Copyright (C) 2009--2023 University of Chicago
+# Copyright (C) 2009--2025 University of Chicago
# Copyright (C) 2005--2008 Gordon Kindlmann
# Copyright (C) 1998--2004 University of Utah
#
@@ -31,9 +31,7 @@
ifeq (,$(DEF_TARGETS))
DEF_TARGETS = true
dev : $(L)/dev
-install : $(L)/install
clean : $(L)/clean
-clobber : $(L)/clobber
include ../GNUmakefile
endif
ifeq (,$($(L).SEEN))
Modified: teem/trunk/src/hest/GNUmakefile
===================================================================
--- teem/trunk/src/hest/GNUmakefile 2025-08-21 05:55:23 UTC (rev 7315)
+++ teem/trunk/src/hest/GNUmakefile 2025-08-21 06:11:47 UTC (rev 7316)
@@ -1,6 +1,6 @@
#
# Teem: Tools to process and visualize scientific data and images
-# Copyright (C) 2009--2023 University of Chicago
+# Copyright (C) 2009--2025 University of Chicago
# Copyright (C) 2005--2008 Gordon Kindlmann
# Copyright (C) 1998--2004 University of Utah
#
@@ -31,9 +31,7 @@
ifeq (,$(DEF_TARGETS))
DEF_TARGETS = true
dev : $(L)/dev
-install : $(L)/install
clean : $(L)/clean
-clobber : $(L)/clobber
include ../GNUmakefile
endif
ifeq (,$($(L).SEEN))
Modified: teem/trunk/src/hoover/GNUmakefile
===================================================================
--- teem/trunk/src/hoover/GNUmakefile 2025-08-21 05:55:23 UTC (rev 7315)
+++ teem/trunk/src/hoover/GNUmakefile 2025-08-21 06:11:47 UTC (rev 7316)
@@ -1,6 +1,6 @@
#
# Teem: Tools to process and visualize scientific data and images
-# Copyright (C) 2009--2023 University of Chicago
+# Copyright (C) 2009--2025 University of Chicago
# Copyright (C) 2005--2008 Gordon Kindlmann
# Copyright (C) 1998--2004 University of Utah
#
@@ -31,9 +31,7 @@
ifeq (,$(DEF_TARGETS))
DEF_TARGETS = true
dev : $(L)/dev
-install : $(L)/install
clean : $(L)/clean
-clobber : $(L)/clobber
include ../GNUmakefile
endif
ifeq (,$($(L).SEEN))
@@ -44,7 +42,7 @@
####
$(L).NEED = limn ell nrrd biff air
$(L).PUBLIC_HEADERS = hoover.h
-$(L).OBJS = defaultsHoover.o stub.o methodsHoover.o rays.o
+$(L).OBJS = defaultsHoover.o stub.o methodsHoover.o rays.o
####
####
####
Modified: teem/trunk/src/limn/GNUmakefile
===================================================================
--- teem/trunk/src/limn/GNUmakefile 2025-08-21 05:55:23 UTC (rev 7315)
+++ teem/trunk/src/limn/GNUmakefile 2025-08-21 06:11:47 UTC (rev 7316)
@@ -1,6 +1,6 @@
#
# Teem: Tools to process and visualize scientific data and images
-# Copyright (C) 2009--2023 University of Chicago
+# Copyright (C) 2009--2025 University of Chicago
# Copyright (C) 2005--2008 Gordon Kindlmann
# Copyright (C) 1998--2004 University of Utah
#
@@ -31,9 +31,7 @@
ifeq (,$(DEF_TARGETS))
DEF_TARGETS = true
dev : $(L)/dev
-install : $(L)/install
clean : $(L)/clean
-clobber : $(L)/clobber
include ../GNUmakefile
endif
ifeq (,$($(L).SEEN))
Modified: teem/trunk/src/meet/GNUmakefile
===================================================================
--- teem/trunk/src/meet/GNUmakefile 2025-08-21 05:55:23 UTC (rev 7315)
+++ teem/trunk/src/meet/GNUmakefile 2025-08-21 06:11:47 UTC (rev 7316)
@@ -1,6 +1,6 @@
#
# Teem: Tools to process and visualize scientific data and images
-# Copyright (C) 2009--2023 University of Chicago
+# Copyright (C) 2009--2025 University of Chicago
# Copyright (C) 2005--2008 Gordon Kindlmann
# Copyright (C) 1998--2004 University of Utah
#
@@ -31,9 +31,7 @@
ifeq (,$(DEF_TARGETS))
DEF_TARGETS = true
dev : $(L)/dev
-install : $(L)/install
clean : $(L)/clean
-clobber : $(L)/clobber
include ../GNUmakefile
endif
ifeq (,$($(L).SEEN))
Modified: teem/trunk/src/mite/GNUmakefile
===================================================================
--- teem/trunk/src/mite/GNUmakefile 2025-08-21 05:55:23 UTC (rev 7315)
+++ teem/trunk/src/mite/GNUmakefile 2025-08-21 06:11:47 UTC (rev 7316)
@@ -1,6 +1,6 @@
#
# Teem: Tools to process and visualize scientific data and images
-# Copyright (C) 2009--2023 University of Chicago
+# Copyright (C) 2009--2025 University of Chicago
# Copyright (C) 2005--2008 Gordon Kindlmann
# Copyright (C) 1998--2004 University of Utah
#
@@ -31,9 +31,7 @@
ifeq (,$(DEF_TARGETS))
DEF_TARGETS = true
dev : $(L)/dev
-install : $(L)/install
clean : $(L)/clean
-clobber : $(L)/clobber
include ../GNUmakefile
endif
ifeq (,$($(L).SEEN))
Modified: teem/trunk/src/moss/GNUmakefile
===================================================================
--- teem/trunk/src/moss/GNUmakefile 2025-08-21 05:55:23 UTC (rev 7315)
+++ teem/trunk/src/moss/GNUmakefile 2025-08-21 06:11:47 UTC (rev 7316)
@@ -1,6 +1,6 @@
#
# Teem: Tools to process and visualize scientific data and images
-# Copyright (C) 2009--2023 University of Chicago
+# Copyright (C) 2009--2025 University of Chicago
# Copyright (C) 2005--2008 Gordon Kindlmann
# Copyright (C) 1998--2004 University of Utah
#
@@ -31,9 +31,7 @@
ifeq (,$(DEF_TARGETS))
DEF_TARGETS = true
dev : $(L)/dev
-install : $(L)/install
clean : $(L)/clean
-clobber : $(L)/clobber
include ../GNUmakefile
endif
ifeq (,$($(L).SEEN))
Modified: teem/trunk/src/nrrd/GNUmakefile
===================================================================
--- teem/trunk/src/nrrd/GNUmakefile 2025-08-21 05:55:23 UTC (rev 7315)
+++ teem/trunk/src/nrrd/GNUmakefile 2025-08-21 06:11:47 UTC (rev 7316)
@@ -1,6 +1,6 @@
#
# Teem: Tools to process and visualize scientific data and images
-# Copyright (C) 2009--2023 University of Chicago
+# Copyright (C) 2009--2025 University of Chicago
# Copyright (C) 2005--2008 Gordon Kindlmann
# Copyright (C) 1998--2004 University of Utah
#
@@ -31,9 +31,7 @@
ifeq (,$(DEF_TARGETS))
DEF_TARGETS = true
dev : $(L)/dev
-install : $(L)/install
clean : $(L)/clean
-clobber : $(L)/clobber
include ../GNUmakefile
endif
ifeq (,$($(L).SEEN))
Modified: teem/trunk/src/pull/GNUmakefile
===================================================================
--- teem/trunk/src/pull/GNUmakefile 2025-08-21 05:55:23 UTC (rev 7315)
+++ teem/trunk/src/pull/GNUmakefile 2025-08-21 06:11:47 UTC (rev 7316)
@@ -1,6 +1,6 @@
#
# Teem: Tools to process and visualize scientific data and images
-# Copyright (C) 2009--2023 University of Chicago
+# Copyright (C) 2009--2025 University of Chicago
# Copyright (C) 2005--2008 Gordon Kindlmann
# Copyright (C) 1998--2004 University of Utah
#
@@ -31,9 +31,7 @@
ifeq (,$(DEF_TARGETS))
DEF_TARGETS = true
dev : $(L)/dev
-install : $(L)/install
clean : $(L)/clean
-clobber : $(L)/clobber
include ../GNUmakefile
endif
ifeq (,$($(L).SEEN))
Modified: teem/trunk/src/push/GNUmakefile
===================================================================
--- teem/trunk/src/push/GNUmakefile 2025-08-21 05:55:23 UTC (rev 7315)
+++ teem/trunk/src/push/GNUmakefile 2025-08-21 06:11:47 UTC (rev 7316)
@@ -1,6 +1,6 @@
#
# Teem: Tools to process and visualize scientific data and images
-# Copyright (C) 2009--2023 University of Chicago
+# Copyright (C) 2009--2025 University of Chicago
# Copyright (C) 2005--2008 Gordon Kindlmann
# Copyright (C) 1998--2004 University of Utah
#
@@ -31,9 +31,7 @@
ifeq (,$(DEF_TARGETS))
DEF_TARGETS = true
dev : $(L)/dev
-install : $(L)/install
clean : $(L)/clean
-clobber : $(L)/clobber
include ../GNUmakefile
endif
ifeq (,$($(L).SEEN))
Modified: teem/trunk/src/seek/GNUmakefile
===================================================================
--- teem/trunk/src/seek/GNUmakefile 2025-08-21 05:55:23 UTC (rev 7315)
+++ teem/trunk/src/seek/GNUmakefile 2025-08-21 06:11:47 UTC (rev 7316)
@@ -1,6 +1,6 @@
#
# Teem: Tools to process and visualize scientific data and images
-# Copyright (C) 2009--2023 University of Chicago
+# Copyright (C) 2009--2025 University of Chicago
# Copyright (C) 2005--2008 Gordon Kindlmann
# Copyright (C) 1998--2004 University of Utah
#
@@ -31,9 +31,7 @@
ifeq (,$(DEF_TARGETS))
DEF_TARGETS = true
dev : $(L)/dev
-install : $(L)/install
clean : $(L)/clean
-clobber : $(L)/clobber
include ../GNUmakefile
endif
ifeq (,$($(L).SEEN))
Modified: teem/trunk/src/ten/GNUmakefile
===================================================================
--- teem/trunk/src/ten/GNUmakefile 2025-08-21 05:55:23 UTC (rev 7315)
+++ teem/trunk/src/ten/GNUmakefile 2025-08-21 06:11:47 UTC (rev 7316)
@@ -1,6 +1,6 @@
#
# Teem: Tools to process and visualize scientific data and images
-# Copyright (C) 2009--2023 University of Chicago
+# Copyright (C) 2009--2025 University of Chicago
# Copyright (C) 2005--2008 Gordon Kindlmann
# Copyright (C) 1998--2004 University of Utah
#
@@ -31,9 +31,7 @@
ifeq (,$(DEF_TARGETS))
DEF_TARGETS = true
dev : $(L)/dev
-install : $(L)/install
clean : $(L)/clean
-clobber : $(L)/clobber
include ../GNUmakefile
endif
ifeq (,$($(L).SEEN))
Modified: teem/trunk/src/tijk/GNUmakefile
===================================================================
--- teem/trunk/src/tijk/GNUmakefile 2025-08-21 05:55:23 UTC (rev 7315)
+++ teem/trunk/src/tijk/GNUmakefile 2025-08-21 06:11:47 UTC (rev 7316)
@@ -1,6 +1,6 @@
#
# Teem: Tools to process and visualize scientific data and images
-# Copyright (C) 2009--2023 University of Chicago
+# Copyright (C) 2009--2025 University of Chicago
# Copyright (C) 2005--2008 Gordon Kindlmann
# Copyright (C) 1998--2004 University of Utah
#
@@ -31,9 +31,7 @@
ifeq (,$(DEF_TARGETS))
DEF_TARGETS = true
dev : $(L)/dev
-install : $(L)/install
clean : $(L)/clean
-clobber : $(L)/clobber
include ../GNUmakefile
endif
ifeq (,$($(L).SEEN))
Modified: teem/trunk/src/unrrdu/GNUmakefile
===================================================================
--- teem/trunk/src/unrrdu/GNUmakefile 2025-08-21 05:55:23 UTC (rev 7315)
+++ teem/trunk/src/unrrdu/GNUmakefile 2025-08-21 06:11:47 UTC (rev 7316)
@@ -1,6 +1,6 @@
#
# Teem: Tools to process and visualize scientific data and images
-# Copyright (C) 2009--2023 University of Chicago
+# Copyright (C) 2009--2025 University of Chicago
# Copyright (C) 2005--2008 Gordon Kindlmann
# Copyright (C) 1998--2004 University of Utah
#
@@ -31,9 +31,7 @@
ifeq (,$(DEF_TARGETS))
DEF_TARGETS = true
dev : $(L)/dev
-install : $(L)/install
clean : $(L)/clean
-clobber : $(L)/clobber
include ../GNUmakefile
endif
ifeq (,$($(L).SEEN))
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <kin...@us...> - 2025-08-21 05:55:25
|
Revision: 7315
http://sourceforge.net/p/teem/code/7315
Author: kindlmann
Date: 2025-08-21 05:55:23 +0000 (Thu, 21 Aug 2025)
Log Message:
-----------
for TeemV2 the src/arch subdir has been renamed src/built and TEEM_ARCH is no longer used
Modified Paths:
--------------
teem/trunk/src/_util/scan-symbols.py
Modified: teem/trunk/src/_util/scan-symbols.py
===================================================================
--- teem/trunk/src/_util/scan-symbols.py 2025-08-21 05:54:59 UTC (rev 7314)
+++ teem/trunk/src/_util/scan-symbols.py 2025-08-21 05:55:23 UTC (rev 7315)
@@ -735,12 +735,9 @@
raise Exception(f'Need {tPath} to be dir with "arch" and "src" subdirs')
if not os.path.isdir(f'{tPath}/src/{lib}'):
raise Exception(f'Do not see library "{lib}" subdir in "src" subdir')
- if not 'TEEM_ARCH' in os.environ:
- raise Exception(f'Environment variable "TEEM_ARCH" not set')
- archEV = os.environ['TEEM_ARCH']
- archDir = f'{tPath}/arch/{archEV}'
+ archDir = f'{tPath}/built'
if not os.path.isdir(archDir):
- raise Exception(f'Do not see "{archDir}" subdir for TEEM_ARCH "{archEV}"')
+ raise Exception(f'Do not see "{archDir}" subdir')
libDir = f'{tPath}/src/{lib}'
if not os.path.isdir(libDir):
raise Exception(f'Do not see "{libDir}" subdir for lib "{lib}"')
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <kin...@us...> - 2025-08-21 05:55:01
|
Revision: 7314
http://sourceforge.net/p/teem/code/7314
Author: kindlmann
Date: 2025-08-21 05:54:59 +0000 (Thu, 21 Aug 2025)
Log Message:
-----------
for TeemV2 the src/arch subdir has been renamed src/built
Modified Paths:
--------------
teem/trunk/src/_util/gen_biffdata.py
Modified: teem/trunk/src/_util/gen_biffdata.py
===================================================================
--- teem/trunk/src/_util/gen_biffdata.py 2025-08-21 04:06:45 UTC (rev 7313)
+++ teem/trunk/src/_util/gen_biffdata.py 2025-08-21 05:54:59 UTC (rev 7314)
@@ -250,7 +250,7 @@
help='output directory in which to put per-library .csv files',
)
parser.add_argument(
- 'teem_source', help='path of Teem source checkout with "src" and "arch" subdirs'
+ 'teem_source', help='path of Teem source checkout with "src" and "built" subdirs'
)
# we always do all the libraries (that might use biff)
# regardless of "experimental"
@@ -264,10 +264,10 @@
teemsrc = args.teem_source
if not (
os.path.isdir(teemsrc)
- and os.path.isdir(f'{teemsrc}/arch')
+ and os.path.isdir(f'{teemsrc}/built')
and os.path.isdir(f'{teemsrc}/src')
):
- raise Exception(f'Need Teem source {teemsrc} to be dir with "arch" and "src" subdirs')
+ raise Exception(f'Need Teem source {teemsrc} to be dir with "src" and "built" subdirs')
return args
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <kin...@us...> - 2025-08-21 04:06:47
|
Revision: 7313
http://sourceforge.net/p/teem/code/7313
Author: kindlmann
Date: 2025-08-21 04:06:45 +0000 (Thu, 21 Aug 2025)
Log Message:
-----------
there more modern ways of doing all this
Removed Paths:
-------------
teem/trunk/CMake/TeemConfig.cmake.in
teem/trunk/CMake/TeemUse.cmake
Deleted: teem/trunk/CMake/TeemConfig.cmake.in
===================================================================
--- teem/trunk/CMake/TeemConfig.cmake.in 2025-08-21 03:52:38 UTC (rev 7312)
+++ teem/trunk/CMake/TeemConfig.cmake.in 2025-08-21 04:06:45 UTC (rev 7313)
@@ -1,64 +0,0 @@
-#
-# Teem: Tools to process and visualize scientific data and images
-# Copyright (C) 2009--2019 University of Chicago
-# Copyright (C) 2008, 2007, 2006, 2005 Gordon Kindlmann
-# Copyright (C) 2004, 2003, 2002, 2001, 2000, 1999, 1998 University of Utah
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public License
-# (LGPL) as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-# The terms of redistributing and/or modifying this software also
-# include exceptions to the LGPL that facilitate static linking.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-# You should have received a copy of the GNU Lesser General Public License
-# along with this library; if not, see <https://www.gnu.org/licenses/>.
-#
-
-#-----------------------------------------------------------------------------
-#
-# TeemConfig.cmake - Teem CMake configuration file for external projects.
-#
-# This file is configured by Teem and used by the TeemUse.cmake module
-# to load Teem's settings for an external project.
-
-# The directory of TeemConfig.cmake is, by definition, Teem_DIR.
-# (this_dir == Teem_DIR)
-#
-get_filename_component(this_dir "${CMAKE_CURRENT_LIST_FILE}" PATH)
-get_filename_component(Teem_ROOT_DIR "${this_dir}/@Teem_CV_CONFIG_TO_ROOT@" ABSOLUTE)
-
-# CMake files required to build client applications that use Teem.
-set(Teem_BUILD_SETTINGS_FILE "@Teem_CV_BUILD_SETTINGS_FILE@")
-set(Teem_USE_FILE "@Teem_CV_USE_FILE@")
-
-# The Teem directories.
-set(Teem_EXECUTABLE_DIRS "@Teem_CV_EXECUTABLE_DIRS@")
-set(Teem_LIBRARY_DIRS "@Teem_CV_LIBRARY_DIRS@")
-set(Teem_INCLUDE_DIRS "@Teem_CV_INCLUDE_DIRS@")
-
-# The Teem libraries.
-set(Teem_LIBRARIES "@Teem_CV_BUILT_LIBRARIES@")
-
-# The C flags added by Teem to the cmake-configured flags.
-set(Teem_REQUIRED_C_FLAGS "@Teem_REQUIRED_C_FLAGS@")
-
-# The Teem version number
-set(Teem_VERSION_MAJOR "@Teem_VERSION_MAJOR@")
-set(Teem_VERSION_MINOR "@Teem_VERSION_MINOR@")
-set(Teem_VERSION_PATCH "@Teem_VERSION_PATCH@")
-
-# Is Teem using shared libraries?
-set(Teem_BUILD_SHARED_LIBS "@BUILD_SHARED_LIBS@")
-
-# The list of tools in teem
-set(Teem_TOOLS "@Teem_TOOLS@")
-
-# The Teem library dependencies.
-if(NOT TARGET teem)
- include("@Teem_CV_LIBRARY_DEPENDS_FILE@")
-endif()
Deleted: teem/trunk/CMake/TeemUse.cmake
===================================================================
--- teem/trunk/CMake/TeemUse.cmake 2025-08-21 03:52:38 UTC (rev 7312)
+++ teem/trunk/CMake/TeemUse.cmake 2025-08-21 04:06:45 UTC (rev 7313)
@@ -1,46 +0,0 @@
-#
-# Teem: Tools to process and visualize scientific data and images
-# Copyright (C) 2009--2019 University of Chicago
-# Copyright (C) 2008, 2007, 2006, 2005 Gordon Kindlmann
-# Copyright (C) 2004, 2003, 2002, 2001, 2000, 1999, 1998 University of Utah
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public License
-# (LGPL) as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-# The terms of redistributing and/or modifying this software also
-# include exceptions to the LGPL that facilitate static linking.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-# You should have received a copy of the GNU Lesser General Public License
-# along with this library; if not, see <https://www.gnu.org/licenses/>.
-#
-
-if(NOT Teem_FOUND)
- message(FATAL_ERROR "Something went wrong. You are including TeemUse.cmake but Teem was not found")
-endif()
-
-# Make Teem easier to use
-include_directories(${Teem_INCLUDE_DIRS})
-link_directories(${Teem_LIBRARY_DIRS})
-
-# Load the compiler settings used for Teem.
-if(Teem_BUILD_SETTINGS_FILE)
- include(CMakeImportBuildSettings)
- CMAKE_IMPORT_BUILD_SETTINGS(${Teem_BUILD_SETTINGS_FILE})
-endif()
-
-# Support static builds
-if(NOT Teem_BUILD_SHARED_LIBS)
- add_definitions(-DTEEM_STATIC=1)
-endif()
-
-# Add compiler flags needed to use Teem.
-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${Teem_REQUIRED_C_FLAGS}")
-set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${Teem_REQUIRED_EXE_LINKER_FLAGS}")
-set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${Teem_REQUIRED_SHARED_LINKER_FLAGS}")
-set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${Teem_REQUIRED_MODULE_LINKER_FLAGS}")
-
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <kin...@us...> - 2025-08-21 03:52:40
|
Revision: 7312
http://sourceforge.net/p/teem/code/7312
Author: kindlmann
Date: 2025-08-21 03:52:38 +0000 (Thu, 21 Aug 2025)
Log Message:
-----------
no longer need to test if -i_dynamic flag required, for very old versions of Intel ICC (e.g., v7.1 on Red Hat 9 / old glibc versions) to handle linking against shared libraries
Removed Paths:
-------------
teem/trunk/CMake/TestNO_ICC_IDYNAMIC_NEEDED.cmake
teem/trunk/CMake/TestNO_ICC_IDYNAMIC_NEEDED.cxx
Deleted: teem/trunk/CMake/TestNO_ICC_IDYNAMIC_NEEDED.cmake
===================================================================
--- teem/trunk/CMake/TestNO_ICC_IDYNAMIC_NEEDED.cmake 2025-08-21 03:47:43 UTC (rev 7311)
+++ teem/trunk/CMake/TestNO_ICC_IDYNAMIC_NEEDED.cmake 2025-08-21 03:52:38 UTC (rev 7312)
@@ -1,52 +0,0 @@
-#
-# Teem: Tools to process and visualize scientific data and images
-# Copyright (C) 2009--2019 University of Chicago
-# Copyright (C) 2008, 2007, 2006, 2005 Gordon Kindlmann
-# Copyright (C) 2004, 2003, 2002, 2001, 2000, 1999, 1998 University of Utah
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public License
-# (LGPL) as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-# The terms of redistributing and/or modifying this software also
-# include exceptions to the LGPL that facilitate static linking.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-# You should have received a copy of the GNU Lesser General Public License
-# along with this library; if not, see <https://www.gnu.org/licenses/>.
-#
-
-#
-# Check if the system is big endian or little endian
-#
-# VARIABLE - variable to store the result to
-#
-
-macro(TESTNO_ICC_IDYNAMIC_NEEDED VARIABLE LOCAL_TEST_DIR)
- if("HAVE_${VARIABLE}" MATCHES "^HAVE_${VARIABLE}$")
- try_run(${VARIABLE} HAVE_${VARIABLE}
- ${CMAKE_BINARY_DIR}
- ${LOCAL_TEST_DIR}/TestNO_ICC_IDYNAMIC_NEEDED.cxx
- OUTPUT_VARIABLE OUTPUT)
- message(STATUS "Check if using the Intel icc compiler, and if -i_dynamic is needed... COMPILE_RESULT...${HAVE_${VARIABLE}} RUN_RESULT...${VARIABLE}\n")
- if(HAVE_${VARIABLE}) #Test compiled, either working intel w/o -i_dynamic, or another compiler
- if(${VARIABLE}) #Intel icc compiler, -i_dynamic not needed
- file(APPEND ${CMAKE_BINARY_DIR}/CMakeError.log
- "-i_dynamic not needed, (Not Intel icc, or this version of Intel icc does not conflict with OS glibc.")
- message(STATUS "-i_dynamic not needed, (Not Intel icc, or this version of Intel icc does not conflict with OS glibc.")
- else() #The compiler is not Intel icc
- file(APPEND ${CMAKE_BINARY_DIR}/CMakeError.log
- "The compiler ERROR--This should never happen")
- message(STATUS "The compiler ERROR--This should never happen")
- endif()
- else() #Test did not compile, either badly broken compiler, or intel -i_dynamic needed
- file(APPEND ${CMAKE_BINARY_DIR}/CMakeError.log
- "\tThe -i_dynamic compiler flag is needed for the Intel icc compiler on this platform.\n")
- message("The -i_dynamic compiler flag is needed for the Intel icc compiler on this platform.")
- endif()
- file(APPEND ${CMAKE_BINARY_DIR}/CMakeError.log "TestNO_ICC_IDYNAMIC_NEEDED produced following output:\n${OUTPUT}\n\n")
- endif()
-endmacro()
Deleted: teem/trunk/CMake/TestNO_ICC_IDYNAMIC_NEEDED.cxx
===================================================================
--- teem/trunk/CMake/TestNO_ICC_IDYNAMIC_NEEDED.cxx 2025-08-21 03:47:43 UTC (rev 7311)
+++ teem/trunk/CMake/TestNO_ICC_IDYNAMIC_NEEDED.cxx 2025-08-21 03:52:38 UTC (rev 7312)
@@ -1,30 +0,0 @@
-/*
- Teem: Tools to process and visualize scientific data and images
- Copyright (C) 2009--2019 University of Chicago
- Copyright (C) 2008, 2007, 2006, 2005 Gordon Kindlmann
- Copyright (C) 2004, 2003, 2002, 2001, 2000, 1999, 1998 University of Utah
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public License
- (LGPL) as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
- The terms of redistributing and/or modifying this software also
- include exceptions to the LGPL that facilitate static linking.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
- You should have received a copy of the GNU Lesser General Public License
- along with this library; if not, see <https://www.gnu.org/licenses/>.
-*/
-
-#ifdef __INTEL_COMPILER
- //If -i_dynamic is required (i.e. icc v7.1 on Redhat 9 or similar glibc version),
- //this simple program will fail to compile.
- #include <iostream>
- int main(int argc, char * argv[]) { return 1; }
-#else //__INTEL_COMPILER
- // If not the INTEL compiler, just fall though to simplest program
- int main(int argc, char * argv[]) { return 1; }
-#endif //__INTEL_COMPILER
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|