summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gnu/local.mk1
-rw-r--r--gnu/packages/astronomy.scm33
-rw-r--r--gnu/packages/patches/wcstools-extend-makefiles.patch358
3 files changed, 392 insertions, 0 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index e397e1cb78..f20de7fa82 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -2107,6 +2107,7 @@ dist_patch_DATA = \
%D%/packages/patches/wacomtablet-add-missing-includes.patch \
%D%/packages/patches/wacomtablet-qt5.15.patch \
%D%/packages/patches/warsow-qfusion-fix-bool-return-type.patch \
+ %D%/packages/patches/wcstools-extend-makefiles.patch \
%D%/packages/patches/wdl-link-libs-and-fix-jnetlib.patch \
%D%/packages/patches/webkitgtk-adjust-bubblewrap-paths.patch \
%D%/packages/patches/webrtc-audio-processing-big-endian.patch \
diff --git a/gnu/packages/astronomy.scm b/gnu/packages/astronomy.scm
index f6b3e5202d..7c665cba4a 100644
--- a/gnu/packages/astronomy.scm
+++ b/gnu/packages/astronomy.scm
@@ -754,6 +754,39 @@ header.")
(base32 "1m3bx6gh5w3c7vvsqcki0x20mg8lilg13m0i8nh7za89w58dxy4w"))))
(properties '((hidden? . #t)))))
+(define-public wcstools
+ (package
+ (name "wcstools")
+ (version "3.9.7")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://tdc-www.harvard.edu/software/wcstools/wcstools-"
+ version ".tar.gz"))
+ (sha256
+ (base32 "125hqzspvqrx6372smzsmxwg06ib2arjc5awnwnq53w1xdq6jpsj"))
+ (patches (search-patches "wcstools-extend-makefiles.patch"))))
+ (build-system gnu-build-system)
+ (arguments
+ (list
+ #:tests? #f ;No tests provided.
+ #:make-flags
+ #~(list (string-append "CC=" #$(cc-for-target))
+ (string-append "PREFIX=" #$output))
+ #:phases
+ #~(modify-phases %standard-phases
+ (delete 'configure))))
+ (home-page "http://tdc-www.harvard.edu/software/wcstools/")
+ (synopsis "Handle the WCS of a FITS image")
+ (description
+ "WCSTools is a set of software utilities, written in C, which create,
+display and manipulate the world coordinate system of a FITS or IRAF image,
+using specific keywords in the image header which relate pixel position within
+the image to position on the sky. Auxillary programs search star catalogs and
+manipulate images.")
+ (license license:gpl2+)))
+
(define-public weightwatcher
(package
(name "weightwatcher")
diff --git a/gnu/packages/patches/wcstools-extend-makefiles.patch b/gnu/packages/patches/wcstools-extend-makefiles.patch
new file mode 100644
index 0000000000..127bf0e670
--- /dev/null
+++ b/gnu/packages/patches/wcstools-extend-makefiles.patch
@@ -0,0 +1,358 @@
+From d702ed6d9da604e522625d08750636f680536743 Mon Sep 17 00:00:00 2001
+From: Sharlatan Hellseher <sharlatanus@gmail.com>
+Date: Mon, 11 Sep 2023 21:12:53 +0100
+Subject: [PATCH] wcstools: Extend makefiles.
+
+This patch was partly sourced from Debian Astro:
+- source: https://salsa.debian.org/debian-astro-team/wcstools/-/tree/master/
+ - file: debian/patches/Rename-libwcs-to-libwcstools-to-avoid-conflicts-with-Mark.patch
+ - commit: 91eb27654fa096d6adebb26dab8d94f5fc2fc721
+
+Additional changes applied:
+- do not rename library from libwcs to libwcstools
+- add 'install' target
+- add PREFIX and VERSION to ease packaging process
+---
+ Makefile | 146 ++++++++++++++++++++++++++----------------------
+ libwcs/Makefile | 22 ++++++--
+ 2 files changed, 96 insertions(+), 72 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index cdc8a46..caadd97 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,12 +1,13 @@
+-CFLAGS= -g -D_FILE_OFFSET_BITS=64
+-CC= cc
++CC = cc
+ LIBWCS = libwcs/libwcs.a
+ LIBS = $(LIBWCS) -lm
+-#LIBS = $(LIBWCS) -lm -lnsl -lsocket
++
++PREFIX ?= /usr
+ BIN = bin
++
+ .PRECIOUS: ${LIBWCS} ${LIBNED}
+ .c.o:
+- $(CC) -c $(CFLAGS) $(DEFS) $<
++ $(CC) -c $(CFLAGS) $(CPPFLAGS) $(DEFS) $<
+
+ all: cphead delwcs delhead edhead fixpix gethead i2f imcat imhead immatch \
+ imrot imsize imstar imwcs scat sethead addpix getpix setpix sky2xy \
+@@ -16,196 +17,205 @@ all: cphead delwcs delhead edhead fixpix gethead i2f imcat imhead immatch \
+ isfile simpos bincat
+
+ addpix: addpix.c $(LIBWCS) libwcs/fitsfile.h
+- $(CC) $(CFLAGS) -o $(BIN)/addpix addpix.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/addpix addpix.c $(LIBS)
+
+ bincat: bincat.c $(LIBWCS) libwcs/fitsfile.h libwcs/wcs.h
+- $(CC) $(CFLAGS) -o $(BIN)/bincat bincat.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/bincat bincat.c $(LIBS)
+
+ char2sp: char2sp.c $(LIBWCS) libwcs/fitsfile.h
+- $(CC) $(CFLAGS) -o $(BIN)/char2sp char2sp.c $(LIBWCS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/char2sp char2sp.c $(LIBWCS)
+
+ conpix: conpix.c $(LIBWCS) libwcs/fitsfile.h
+- $(CC) $(CFLAGS) -o $(BIN)/conpix conpix.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/conpix conpix.c $(LIBS)
+
+ cphead: cphead.c $(LIBWCS) libwcs/fitsfile.h
+- $(CC) $(CFLAGS) -o $(BIN)/cphead cphead.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/cphead cphead.c $(LIBS)
+
+ crlf: crlf.c
+- $(CC) $(CFLAGS) -o $(BIN)/crlf crlf.c
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/crlf crlf.c
+
+ delwcs: delwcs.c $(LIBWCS) libwcs/fitsfile.h
+- $(CC) $(CFLAGS) -o $(BIN)/delwcs delwcs.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/delwcs delwcs.c $(LIBS)
+
+ delhead: delhead.c $(LIBWCS) libwcs/fitsfile.h
+- $(CC) $(CFLAGS) -o $(BIN)/delhead delhead.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/delhead delhead.c $(LIBS)
+
+ edhead: edhead.c $(LIBWCS) libwcs/fitsfile.h
+- $(CC) $(CFLAGS) -o $(BIN)/edhead edhead.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/edhead edhead.c $(LIBS)
+
+ filename: filename.c
+- $(CC) $(CFLAGS) -o $(BIN)/filename filename.c
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/filename filename.c
+
+ filedir: filedir.c
+- $(CC) $(CFLAGS) -o $(BIN)/filedir filedir.c
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/filedir filedir.c
+
+ fileroot: fileroot.c
+- $(CC) $(CFLAGS) -o $(BIN)/fileroot fileroot.c
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/fileroot fileroot.c
+
+ filext: filext.c
+- $(CC) $(CFLAGS) -o $(BIN)/filext filext.c
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/filext filext.c
+
+ fixhead: fixhead.c $(LIBWCS) libwcs/fitsfile.h
+- $(CC) $(CFLAGS) -o $(BIN)/fixhead fixhead.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/fixhead fixhead.c $(LIBS)
+
+ fixpix: fixpix.c $(LIBWCS) libwcs/fitsfile.h
+- $(CC) $(CFLAGS) -o $(BIN)/fixpix fixpix.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/fixpix fixpix.c $(LIBS)
+
+ getcol: getcol.c $(LIBWCS) libwcs/wcscat.h
+- $(CC) $(CFLAGS) -o $(BIN)/getcol getcol.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/getcol getcol.c $(LIBS)
+
+ getdate: getdate.c $(LIBWCS) libwcs/wcscat.h
+- $(CC) $(CFLAGS) -o $(BIN)/getdate getdate.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/getdate getdate.c $(LIBS)
+
+ gethead: gethead.c $(LIBWCS) libwcs/wcs.h libwcs/fitsfile.h libwcs/wcscat.h
+- $(CC) $(CFLAGS) -o $(BIN)/gethead gethead.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/gethead gethead.c $(LIBS)
+
+ getfits: getfits.c $(LIBWCS) libwcs/fitsfile.h libwcs/wcs.h libwcs/wcscat.h
+- $(CC) $(CFLAGS) -o $(BIN)/getfits getfits.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/getfits getfits.c $(LIBS)
+
+ getpix: getpix.c $(LIBWCS) libwcs/wcs.h libwcs/fitsfile.h libwcs/wcscat.h
+- $(CC) $(CFLAGS) -o $(BIN)/getpix getpix.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/getpix getpix.c $(LIBS)
+
+ gettab: gettab.c $(LIBWCS) libwcs/wcscat.h
+- $(CC) $(CFLAGS) -o $(BIN)/gettab gettab.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/gettab gettab.c $(LIBS)
+
+ httpget: httpget.c $(LIBWCS) libwcs/wcscat.h
+- $(CC) $(CFLAGS) -o $(BIN)/httpget httpget.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/httpget httpget.c $(LIBS)
+
+ htmlsp: htmlsp.c
+- $(CC) $(CFLAGS) -o $(BIN)/htmlsp htmlsp.c
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/htmlsp htmlsp.c
+
+ i2f: i2f.c $(LIBWCS) libwcs/fitsfile.h
+- $(CC) $(CFLAGS) -o $(BIN)/i2f i2f.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/i2f i2f.c $(LIBS)
+
+ imcat: imcat.c $(LIBWCS) libwcs/fitsfile.h libwcs/wcs.h
+- $(CC) $(CFLAGS) -o $(BIN)/imcat imcat.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/imcat imcat.c $(LIBS)
+
+ imfill: imfill.c $(LIBWCS) libwcs/fitsfile.h
+- $(CC) $(CFLAGS) -o $(BIN)/imfill imfill.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/imfill imfill.c $(LIBS)
+
+ imresize: imresize.c $(LIBWCS) libwcs/fitsfile.h
+- $(CC) $(CFLAGS) -o $(BIN)/imresize imresize.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/imresize imresize.c $(LIBS)
+
+ imsmooth: imsmooth.c $(LIBWCS) libwcs/fitsfile.h
+- $(CC) $(CFLAGS) -o $(BIN)/imsmooth imsmooth.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/imsmooth imsmooth.c $(LIBS)
+
+ imhead: imhead.c $(LIBWCS) libwcs/fitsfile.h libwcs/wcs.h
+- $(CC) $(CFLAGS) -o $(BIN)/imhead imhead.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/imhead imhead.c $(LIBS)
+
+ imrot: imrot.c $(LIBWCS) libwcs/fitsfile.h
+- $(CC) $(CFLAGS) -o $(BIN)/imrot imrot.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/imrot imrot.c $(LIBS)
+
+ imsize: imsize.c $(LIBWCS) libwcs/fitsfile.h libwcs/wcs.h
+- $(CC) $(CFLAGS) -o $(BIN)/imsize imsize.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/imsize imsize.c $(LIBS)
+
+ imstack: imstack.c $(LIBWCS) libwcs/fitsfile.h
+- $(CC) $(CFLAGS) -o $(BIN)/imstack imstack.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/imstack imstack.c $(LIBS)
+
+ imextract: imextract.c $(LIBWCS) libwcs/fitsfile.h libwcs/wcscat.h
+- $(CC) $(CFLAGS) -o $(BIN)/imextract imextract.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/imextract imextract.c $(LIBS)
+
+ imstar: imstar.c $(LIBWCS) libwcs/fitsfile.h libwcs/wcs.h libwcs/lwcs.h libwcs/wcscat.h
+- $(CC) $(CFLAGS) -o $(BIN)/imstar imstar.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/imstar imstar.c $(LIBS)
+
+ isfile: isfile.c $(LIBWCS) libwcs/fitshead.h
+- $(CC) $(CFLAGS) -o $(BIN)/isfile isfile.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/isfile isfile.c $(LIBS)
+
+ isfits: isfits.c $(LIBWCS) libwcs/fitshead.h
+- $(CC) $(CFLAGS) -o $(BIN)/isfits isfits.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/isfits isfits.c $(LIBS)
+
+ isnum: isnum.c $(LIBWCS) libwcs/fitshead.h
+- $(CC) $(CFLAGS) -o $(BIN)/isnum isnum.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/isnum isnum.c $(LIBS)
+
+ isdate: isdate.c $(LIBWCS) libwcs/fitshead.h
+- $(CC) $(CFLAGS) -o $(BIN)/isdate isdate.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/isdate isdate.c $(LIBS)
+
+ isimlist: isimlist.c $(LIBWCS) libwcs/fitsfile.h
+- $(CC) $(CFLAGS) -o $(BIN)/isimlist isimlist.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/isimlist isimlist.c $(LIBS)
+
+ isrange: isrange.c
+- $(CC) $(CFLAGS) -o $(BIN)/isrange isrange.c
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/isrange isrange.c
+
+ imwcs: imwcs.c $(LIBWCS) libwcs/fitsfile.h libwcs/lwcs.h
+- $(CC) $(CFLAGS) -o $(BIN)/imwcs imwcs.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/imwcs imwcs.c $(LIBS)
+
+ immatch: immatch.c $(LIBWCS) libwcs/fitsfile.h libwcs/lwcs.h
+- $(CC) $(CFLAGS) -o $(BIN)/immatch immatch.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/immatch immatch.c $(LIBS)
+
+ immwcs: immwcs.c $(LIBWCS) libwcs/fitsfile.h libwcs/lwcs.h
+- $(CC) $(CFLAGS) -o $(BIN)/immwcs immwcs.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/immwcs immwcs.c $(LIBS)
+
+ keyhead: keyhead.c $(LIBWCS) libwcs/fitsfile.h libwcs/wcs.h
+- $(CC) $(CFLAGS) -o $(BIN)/keyhead keyhead.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/keyhead keyhead.c $(LIBS)
+
+ matchcat: matchcat.c $(LIBWCS) libwcs/wcscat.h libwcs/wcs.h
+- $(CC) $(CFLAGS) -o $(BIN)/matchcat matchcat.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/matchcat matchcat.c $(LIBS)
+
+ newfits: newfits.c $(LIBWCS) libwcs/fitshead.h libwcs/wcs.h
+- $(CC) $(CFLAGS) -o $(BIN)/newfits newfits.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/newfits newfits.c $(LIBS)
+
+ remap: remap.c $(LIBWCS) libwcs/fitsfile.h libwcs/wcs.h
+- $(CC) $(CFLAGS) -o $(BIN)/remap remap.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/remap remap.c $(LIBS)
+
+ scat: scat.c $(LIBWCS) libwcs/wcscat.h libwcs/wcs.h
+- $(CC) $(CFLAGS) -o $(BIN)/scat scat.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/scat scat.c $(LIBS)
+
+ sethead: sethead.c $(LIBWCS) libwcs/fitsfile.h libwcs/wcs.h
+- $(CC) $(CFLAGS) -o $(BIN)/sethead sethead.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/sethead sethead.c $(LIBS)
+
+ setpix: setpix.c $(LIBWCS) libwcs/fitsfile.h libwcs/wcscat.h
+- $(CC) $(CFLAGS) -o $(BIN)/setpix setpix.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/setpix setpix.c $(LIBS)
+
+ sky2xy: sky2xy.c $(LIBWCS) libwcs/wcs.h libwcs/fitsfile.h
+- $(CC) $(CFLAGS) -o $(BIN)/sky2xy sky2xy.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/sky2xy sky2xy.c $(LIBS)
+
+ skycoor: skycoor.c $(LIBWCS) libwcs/wcs.h libwcs/wcscat.h
+- $(CC) $(CFLAGS) -o $(BIN)/skycoor skycoor.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/skycoor skycoor.c $(LIBS)
+
+ sp2char: sp2char.c $(LIBWCS) libwcs/fitsfile.h
+- $(CC) $(CFLAGS) -o $(BIN)/sp2char sp2char.c $(LIBWCS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/sp2char sp2char.c $(LIBWCS)
+
+ subpix: subpix.c $(LIBWCS) libwcs/fitsfile.h
+- $(CC) $(CFLAGS) -o $(BIN)/subpix subpix.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/subpix subpix.c $(LIBS)
+
+ sumpix: sumpix.c $(LIBWCS) libwcs/fitsfile.h libwcs/wcscat.h
+- $(CC) $(CFLAGS) -o $(BIN)/sumpix sumpix.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/sumpix sumpix.c $(LIBS)
+
+ wcshead: wcshead.c $(LIBWCS) libwcs/fitsfile.h
+- $(CC) $(CFLAGS) -o $(BIN)/wcshead wcshead.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/wcshead wcshead.c $(LIBS)
+
+ xy2sky: xy2sky.c $(LIBWCS) libwcs/wcs.h libwcs/wcscat.h
+- $(CC) $(CFLAGS) -o $(BIN)/xy2sky xy2sky.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/xy2sky xy2sky.c $(LIBS)
+
+ simpos: simpos.c libwcs/libwcs.a
+- $(CC) $(CFLAGS) -o $(BIN)/simpos simpos.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/simpos simpos.c $(LIBS)
+
+ gsc2cat: gsc2cat.c $(LIBWCS)
+- $(CC) $(CFLAGS) -o $(BIN)/gsc2cat gsc2cat.c $(LIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/gsc2cat gsc2cat.c $(LIBS)
+
+ tmcat: tmcat.c
+- $(CC) $(CFLAGS) -o $(BIN)/tmcat tmcat.c
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/tmcat tmcat.c
+
+ tmcate: tmcate.c
+- $(CC) $(CFLAGS) -o $(BIN)/tmcate tmcate.c
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $(BIN)/tmcate tmcate.c
+
+ $(LIBWCS): libwcs/*.c libwcs/*.h
+- cd libwcs; make
++ $(MAKE) CC=$(CC) -C libwcs
++
++install:
++ test -e $(DESTDIR)$(PREFIX)/bin || mkdir -p $(DESTDIR)$(PREFIX)/bin
++ test -e $(DESTDIR)$(PREFIX)/include || mkdir -p $(DESTDIR)$(PREFIX)/include/wcstools
++ test -e $(DESTDIR)$(PREFIX)/lib/wcstools || mkdir -p $(DESTDIR)$(PREFIX)/lib/wcstools
++ test -e $(DESTDIR)$(PREFIX)/share/wcstools || mkdir -p $(DESTDIR)$(PREFIX)/share/wcstools
++ install ./bin/* $(DESTDIR)$(PREFIX)/bin
++ install ./libwcs/*.so $(DESTDIR)$(PREFIX)/lib/wcstools
++ install ./libwcs/*.so.* $(DESTDIR)$(PREFIX)/lib/wcstools
+
+ objclean:
+- cd libwcs; make clean
++ $(MAKE) -C libwcs clean
+
+ binclean:
+ rm -f ./bin/*
+
+ clean:
+- make objclean; make binclean
++ objclean binclean
+diff --git a/libwcs/Makefile b/libwcs/Makefile
+index ec2fae0..038ec61 100644
+--- a/libwcs/Makefile
++++ b/libwcs/Makefile
+@@ -1,5 +1,10 @@
+-CFLAGS= -g -D_FILE_OFFSET_BITS=64
+-CC= cc
++CFLAGS+= -fPIC
++
++VERSION?= 3.9.7
++VERSION_PARTS= $(subst ., ,$(VERSION))
++VERSION_MAJOR= $(word 1,$(VERSION_PARTS))
++VERSION_MINOR= $(word 2,$(VERSION_PARTS))
++VERSION_MICRO= $(word 3,$(VERSION_PARTS))
+
+ OBJS = imsetwcs.o imgetwcs.o matchstar.o findstar.o daoread.o wcscon.o \
+ fitswcs.o wcsinit.o wcs.o ty2read.o webread.o tmcread.o \
+@@ -11,10 +16,19 @@ OBJS = imsetwcs.o imgetwcs.o matchstar.o findstar.o daoread.o wcscon.o \
+ sortstar.o platefit.o iget.o fileutil.o \
+ wcslib.o lin.o cel.o proj.o sph.o wcstrig.o distort.o poly.o
+
+-libwcs.a: $(OBJS)
++all: libwcs.so.$(VERSION) libwcs.a
+ ar rv $@ $?
+ ranlib $@
+
++libwcs.a: $(OBJS)
++ ar rv $@ $?
++ ranlib $@
++
++libwcs.so.$(VERSION): $(OBJS)
++ $(CC) $(LDFLAGS) -shared -o $@ -Wl,-soname,libwcs.so.$(VERSION_MAJOR) $? -lm
++ ln -s libwcs.so.$(VERSION) libwcs.so.$(VERSION_MAJOR)
++ ln -s libwcs.so.$(VERSION) libwcs.so
++
+ actread.o: fitsfile.h wcscat.h wcs.h fitshead.h wcslib.h
+ binread.o: wcscat.h wcs.h fitshead.h wcslib.h
+ ctgread.o: wcscat.h wcs.h fitshead.h wcslib.h
+@@ -67,4 +81,4 @@ webread.o: wcscat.h
+ worldpos.o: wcs.h fitshead.h wcslib.h
+
+ clean:
+- rm -f *.a *.o
++ rm -f *.a *.o *.so *.so.*
+--
+2.41.0
+