diff options
| author | Mike Wey | 2017-05-19 20:29:37 +0200 |
|---|---|---|
| committer | Mike Wey | 2017-05-19 20:31:44 +0200 |
| commit | 87c811161c608f8428ff8e399c60f9672c6cfc7e (patch) | |
| tree | 59f2d3656e14e13c32354a835a5251bea864a174 | |
| parent | 1f55c1eaf58bd2bcdb8d11656e816db2e9f05682 (diff) | |
Swith to using a config file.
This is hopefully a first step to supporting dub. See #12
| -rw-r--r-- | GNUmakefile | 33 | ||||
| -rw-r--r-- | dmagick/c/magickModule.d | 8 | ||||
| -rw-r--r-- | dmagick/c/magickType.d | 18 | ||||
| -rw-r--r-- | dmagick/c/magickVersion.d | 311 | ||||
| -rw-r--r-- | dmagick/c/magickVersion.d.in | 48 | ||||
| -rw-r--r-- | dmagick/c/quantum.d | 4 | ||||
| -rw-r--r-- | dmagick/c/resample.d | 30 | ||||
| -rw-r--r-- | windows.mak | 8 |
8 files changed, 98 insertions, 362 deletions
diff --git a/GNUmakefile b/GNUmakefile index 94d2c7f..55e5b35 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -48,37 +48,27 @@ ifeq ("$(ARCH)", "x86_64") LDFLAGS+=-m64 endif -MAGICKCORELIB=$(LINKERFLAG)$(lastword $(shell pkg-config --libs MagickCore)) +MAGICKCORELIB=$(LINKERFLAG)-l$(shell pkg-config --variable=libname MagickCore) AR=ar RANLIB=ranlib QUANTUMDEPTH = $(filter Q%,$(shell convert --version)) -MAGICKVERSION = $(firstword $(subst -, ,$(subst .,,$(word 3,$(shell convert --version))))) +MAGICKVERSION = $(firstword $(subst -, ,$(word 3,$(shell convert --version)))) HDRISUPPORT = $(findstring HDRI,$(shell convert --version | grep HDRI)) -WRAPEDVERSION = $(subst 0x,,$(subst ;,,$(lastword $(shell grep "enum\ MagickLibVersion\ " dmagick/c/magickVersion.d)))) - -ifneq ("$(QUANTUMDEPTH)","Q16") - VERSIONS+= $(VERSIONFLAG)$(subst Q,Quantum,$(QUANTUMDEPTH)) -endif - -ifneq ("$(MAGICKVERSION)","$(WRAPEDVERSION)") - VERSIONS+= $(VERSIONFLAG)MagickCore_$(MAGICKVERSION) -endif ifeq ("$(HDRISUPPORT)","HDRI") - VERSIONS+= $(VERSIONFLAG)MagickCore_HDRI -endif - -ifdef VERSIONS - DCFLAGS+=$(VERSIONS) + HDRI=true +else + HDRI=false endif ####################################################################### LIBNAME_DMAGICK = libDMagick.a SOURCES_DMAGICK = $(sort $(wildcard dmagick/*.d)) \ - $(sort $(wildcard dmagick/c/*.d)) + $(sort $(wildcard dmagick/c/*.d)) \ + dmagick/c/magickVersion.d OBJECTS_DMAGICK = $(patsubst %.d,%.o,$(SOURCES_DMAGICK)) DOCS_DMAGICK = $(patsubst dmagick/%.d,docs/%.html,$(SOURCES_DMAGICK)) @@ -91,9 +81,15 @@ $(LIBNAME_DMAGICK): $(OBJECTS_DMAGICK) $(AR) rcs $@ $^ $(RANLIB) $@ +dmagick/c/magickVersion.d: dmagick/c/magickVersion.d.in + sed 's/@MagickLibVersion@/$(subst .,,$(MAGICKVERSION))/g' $< > $@ + sed -i 's/@MagickLibVersionText@/$(MAGICKVERSION)/g' $@ + sed -i 's/@QuantumDepth@/$(subst Q,,$(QUANTUMDEPTH))/g' $@ + sed -i 's/@HDRI@/$(HDRI)/g' $@ + ####################################################################### -%.o : %.d +%.o : %.d dmagick/c/magickVersion.d $(DC) $(DCFLAGS) -c $< $(output) ####################################################################### @@ -145,6 +141,7 @@ uninstall: rm -f $(DESTDIR)$(prefix)/lib/pkgconfig/DMagick.pc clean: + rm -rf dmagick/c/magickVersion.d rm -rf $(LIBNAME_DMAGICK) $(OBJECTS_DMAGICK) rm -rf $(DOCS_DMAGICK) docs/c rm -rf unittest.o unittest diff --git a/dmagick/c/magickModule.d b/dmagick/c/magickModule.d index 8aa3a6e..a40ce0c 100644 --- a/dmagick/c/magickModule.d +++ b/dmagick/c/magickModule.d @@ -16,7 +16,7 @@ extern(C) MagickImageFilterModule } - struct ModuleInfo + struct MagickModuleInfo { char* path, @@ -37,7 +37,7 @@ extern(C) MagickBooleanType stealth; - ModuleInfo* + MagickModuleInfo* previous, next; @@ -49,7 +49,7 @@ extern(C) char** GetModuleList(const(char)*, const MagickModuleType, size_t*, ExceptionInfo*); - const(ModuleInfo)** GetModuleInfoList(const(char)*, size_t*, ExceptionInfo*); + const(MagickModuleInfo)** GetModuleInfoList(const(char)*, size_t*, ExceptionInfo*); static if ( MagickLibVersion < 0x689 ) { @@ -62,7 +62,7 @@ extern(C) MagickBooleanType OpenModule(const(char)*, ExceptionInfo*); MagickBooleanType OpenModules(ExceptionInfo*); - ModuleInfo* GetModuleInfo(const(char)*, ExceptionInfo*); + MagickModuleInfo* GetModuleInfo(const(char)*, ExceptionInfo*); void DestroyModuleList(); void ModuleComponentTerminus(); diff --git a/dmagick/c/magickType.d b/dmagick/c/magickType.d index 8666820..9103823 100644 --- a/dmagick/c/magickType.d +++ b/dmagick/c/magickType.d @@ -19,13 +19,13 @@ extern (C) alias double MagickDoubleT; } - version(Quantum8) + static if(MagickQuantumDepth == 8) { /** * Quantum is an alias for the smallest integer that can hold * a pixel channel. */ - version(MagickCore_HDRI) + static if(MagickHDRISupport) alias float Quantum; else alias ubyte Quantum; @@ -44,7 +44,6 @@ extern (C) * as Quantum.max except when the Quantum dept is 64 bits. */ enum QuantumRange = ubyte.max; - enum MagickQuantumDepth = 8; enum MaxColormapSize = 256; static if ( MagickLibVersion < 0x678 ) @@ -53,13 +52,13 @@ extern (C) enum MagickHuge = 1.0e6; } } - else version(Quantum32) + else static if(MagickQuantumDepth == 32) { /** * Quantum is an alias for the smallest integer that can hold * a pixel channel. */ - version(MagickCore_HDRI) + static if(MagickHDRISupport) { static if ( MagickLibVersion >= 0x690 ) alias double Quantum; @@ -83,7 +82,6 @@ extern (C) * as Quantum.max except when the Quantum dept is 64 bits. */ enum QuantumRange = uint.max; - enum MagickQuantumDepth = 32; enum MaxColormapSize = 65536; static if ( MagickLibVersion < 0x678 ) @@ -92,7 +90,7 @@ extern (C) enum MagickHuge = 1.0e12; } } - else version(Quantum64) + else static if(MagickQuantumDepth == 64) { /** * Quantum is an alias for the smallest integer that can hold @@ -117,7 +115,6 @@ extern (C) * as Quantum.max except when the Quantum dept is 64 bits. */ enum QuantumRange = 18446744073709551615.0; - enum MagickQuantumDepth = 64; enum MaxColormapSize = 65536; static if ( MagickLibVersion < 0x678 ) @@ -132,7 +129,7 @@ extern (C) * Quantum is an alias for the smallest integer that can hold * a pixel channel. */ - version(MagickCore_HDRI) + static if(MagickHDRISupport) alias float Quantum; else alias ushort Quantum; @@ -151,7 +148,6 @@ extern (C) * as Quantum.max except when the Quantum dept is 64 bits. */ enum QuantumRange = ushort.max; - enum MagickQuantumDepth = 16; enum MaxColormapSize = 65536; static if ( MagickLibVersion < 0x678 ) @@ -161,6 +157,8 @@ extern (C) } } + alias MagickQuantumDepth = dmagick.c.magickVersion.MagickQuantumDepth; + static if ( MagickLibVersion == 0x678 ) { enum MagickRealType MagickEpsilon = 2.220446e-16; diff --git a/dmagick/c/magickVersion.d b/dmagick/c/magickVersion.d deleted file mode 100644 index a7ae11c..0000000 --- a/dmagick/c/magickVersion.d +++ /dev/null @@ -1,311 +0,0 @@ -module dmagick.c.magickVersion; - -import core.stdc.config; -import core.stdc.stdio; - -extern(C) -{ - version(MagickCore_660) - { - /// Defines the version of ImageMagick where these headers are based on. - enum MagickLibVersion = 0x660; - ///ditto - enum MagickLibVersionText = "6.6.0"; - } - else version(MagickCore_661) - { - /// Defines the version of ImageMagick where these headers are based on. - enum MagickLibVersion = 0x661; - ///ditto - enum MagickLibVersionText = "6.6.1"; - } - else version(MagickCore_662) - { - /// Defines the version of ImageMagick where these headers are based on. - enum MagickLibVersion = 0x662; - ///ditto - enum MagickLibVersionText = "6.6.2"; - } - else version(MagickCore_663) - { - /// Defines the version of ImageMagick where these headers are based on. - enum MagickLibVersion = 0x663; - ///ditto - enum MagickLibVersionText = "6.6.3"; - } - else version(MagickCore_664) - { - /// Defines the version of ImageMagick where these headers are based on. - enum MagickLibVersion = 0x664; - ///ditto - enum MagickLibVersionText = "6.6.4"; - } - else version(MagickCore_665) - { - /// Defines the version of ImageMagick where these headers are based on. - enum MagickLibVersion = 0x665; - ///ditto - enum MagickLibVersionText = "6.6.5"; - } - else version(MagickCore_666) - { - /// Defines the version of ImageMagick where these headers are based on. - enum MagickLibVersion = 0x666; - ///ditto - enum MagickLibVersionText = "6.6.6"; - } - else version(MagickCore_667) - { - /// Defines the version of ImageMagick where these headers are based on. - enum MagickLibVersion = 0x667; - ///ditto - enum MagickLibVersionText = "6.6.7"; - } - else version(MagickCore_668) - { - /// Defines the version of ImageMagick where these headers are based on. - enum MagickLibVersion = 0x668; - ///ditto - enum MagickLibVersionText = "6.6.8"; - } - else version(MagickCore_669) - { - /// Defines the version of ImageMagick where these headers are based on. - enum MagickLibVersion = 0x669; - ///ditto - enum MagickLibVersionText = "6.6.9"; - } - else version(MagickCore_670) - { - /// Defines the version of ImageMagick where these headers are based on. - enum MagickLibVersion = 0x670; - ///ditto - enum MagickLibVersionText = "6.7.0"; - } - else version(MagickCore_671) - { - /// Defines the version of ImageMagick where these headers are based on. - enum MagickLibVersion = 0x671; - ///ditto - enum MagickLibVersionText = "6.7.1"; - } - else version(MagickCore_672) - { - /// Defines the version of ImageMagick where these headers are based on. - enum MagickLibVersion = 0x672; - ///ditto - enum MagickLibVersionText = "6.7.2"; - } - else version(MagickCore_673) - { - /// Defines the version of ImageMagick where these headers are based on. - enum MagickLibVersion = 0x673; - ///ditto - enum MagickLibVersionText = "6.7.3"; - } - else version(MagickCore_674) - { - /// Defines the version of ImageMagick where these headers are based on. - enum MagickLibVersion = 0x674; - ///ditto - enum MagickLibVersionText = "6.7.4"; - } - else version(MagickCore_675) - { - /// Defines the version of ImageMagick where these headers are based on. - enum MagickLibVersion = 0x675; - ///ditto - enum MagickLibVersionText = "6.7.5"; - } - else version(MagickCore_676) - { - /// Defines the version of ImageMagick where these headers are based on. - enum MagickLibVersion = 0x676; - ///ditto - enum MagickLibVersionText = "6.7.6"; - } - else version(MagickCore_677) - { - /// Defines the version of ImageMagick where these headers are based on. - enum MagickLibVersion = 0x677; - ///ditto - enum MagickLibVersionText = "6.7.7"; - } - else version(MagickCore_678) - { - /// Defines the version of ImageMagick where these headers are based on. - enum MagickLibVersion = 0x678; - ///ditto - enum MagickLibVersionText = "6.7.8"; - } - else version(MagickCore_679) - { - /// Defines the version of ImageMagick where these headers are based on. - enum MagickLibVersion = 0x679; - ///ditto - enum MagickLibVersionText = "6.7.9"; - } - else version(MagickCore_680) - { - /// Defines the version of ImageMagick where these headers are based on. - enum MagickLibVersion = 0x680; - ///ditto - enum MagickLibVersionText = "6.8.0"; - } - else version(MagickCore_681) - { - /// Defines the version of ImageMagick where these headers are based on. - enum MagickLibVersion = 0x681; - ///ditto - enum MagickLibVersionText = "6.8.1"; - } - else version(MagickCore_682) - { - /// Defines the version of ImageMagick where these headers are based on. - enum MagickLibVersion = 0x682; - ///ditto - enum MagickLibVersionText = "6.8.2"; - } - else version(MagickCore_683) - { - /// Defines the version of ImageMagick where these headers are based on. - enum MagickLibVersion = 0x683; - ///ditto - enum MagickLibVersionText = "6.8.3"; - } - else version(MagickCore_684) - { - /// Defines the version of ImageMagick where these headers are based on. - enum MagickLibVersion = 0x684; - ///ditto - enum MagickLibVersionText = "6.8.4"; - } - else version(MagickCore_685) - { - /// Defines the version of ImageMagick where these headers are based on. - enum MagickLibVersion = 0x685; - ///ditto - enum MagickLibVersionText = "6.8.5"; - } - else version(MagickCore_686) - { - /// Defines the version of ImageMagick where these headers are based on. - enum MagickLibVersion = 0x686; - ///ditto - enum MagickLibVersionText = "6.8.6"; - } - else version(MagickCore_687) - { - /// Defines the version of ImageMagick where these headers are based on. - enum MagickLibVersion = 0x687; - ///ditto - enum MagickLibVersionText = "6.8.7"; - } - else version(MagickCore_688) - { - /// Defines the version of ImageMagick where these headers are based on. - enum MagickLibVersion = 0x688; - ///ditto - enum MagickLibVersionText = "6.8.8"; - } - else version(MagickCore_689) - { - /// Defines the version of ImageMagick where these headers are based on. - enum MagickLibVersion = 0x689; - ///ditto - enum MagickLibVersionText = "6.8.9"; - } - else version(MagickCore_690) - { - /// Defines the version of ImageMagick where these headers are based on. - enum MagickLibVersion = 0x690; - ///ditto - enum MagickLibVersionText = "6.9.0"; - } - else version(MagickCore_691) - { - /// Defines the version of ImageMagick where these headers are based on. - enum MagickLibVersion = 0x691; - ///ditto - enum MagickLibVersionText = "6.9.1"; - } - else version(MagickCore_692) - { - /// Defines the version of ImageMagick where these headers are based on. - enum MagickLibVersion = 0x692; - ///ditto - enum MagickLibVersionText = "6.9.2"; - } - else version(MagickCore_693) - { - /// Defines the version of ImageMagick where these headers are based on. - enum MagickLibVersion = 0x693; - ///ditto - enum MagickLibVersionText = "6.9.3"; - } - else version(MagickCore_694) - { - /// Defines the version of ImageMagick where these headers are based on. - enum MagickLibVersion = 0x694; - ///ditto - enum MagickLibVersionText = "6.9.4"; - } - else version(MagickCore_695) - { - /// Defines the version of ImageMagick where these headers are based on. - enum MagickLibVersion = 0x695; - ///ditto - enum MagickLibVersionText = "6.9.5"; - } - else version(MagickCore_696) - { - /// Defines the version of ImageMagick where these headers are based on. - enum MagickLibVersion = 0x696; - ///ditto - enum MagickLibVersionText = "6.9.6"; - } - else version(MagickCore_697) - { - /// Defines the version of ImageMagick where these headers are based on. - enum MagickLibVersion = 0x697; - ///ditto - enum MagickLibVersionText = "6.9.7"; - } - else - { - /// Defines the version of ImageMagick where these headers are based on. - enum MagickLibVersion = 0x698; - ///ditto - enum MagickLibVersionText = "6.9.8"; - } - - /* - * With ImageMagick 6.6.3 long and unsinged long were changed to - * ssize_t and size_t. This is only a problem for 64bits windows. - */ - static if (MagickLibVersion < 0x663 && c_ulong.sizeof != size_t.sizeof) - { - static assert(0, "Only ImageMagick version 6.6.3 and up are supported on your platform"); - } - - char* GetMagickHomeURL(); - - const(char)* GetMagickCopyright(); - - static if ( MagickLibVersion >= 0x681 ) - { - const(char)* GetMagickDelegates(); - } - - const(char)* GetMagickFeatures(); - const(char)* GetMagickPackageName(); - const(char)* GetMagickQuantumDepth(size_t*); - const(char)* GetMagickQuantumRange(size_t*); - const(char)* GetMagickReleaseDate(); - const(char)* GetMagickVersion(size_t*); - - static if ( MagickLibVersion >= 0x681 ) - { - void ListMagickVersion(FILE*); - } -} diff --git a/dmagick/c/magickVersion.d.in b/dmagick/c/magickVersion.d.in new file mode 100644 index 0000000..3d7d79c --- /dev/null +++ b/dmagick/c/magickVersion.d.in @@ -0,0 +1,48 @@ +module dmagick.c.magickVersion; + +import core.stdc.config; +import core.stdc.stdio; + +/// Defines the version of ImageMagick where these headers are based on. +enum MagickLibVersion = 0x@MagickLibVersion@; +///ditto +enum MagickLibVersionText = "@MagickLibVersionText@"; + +/// The quantum depth used by MagickCore. +enum MagickQuantumDepth = @QuantumDepth@; + +/// Defines if HDRI is enabled. +enum MagickHDRISupport = @HDRI@; + +/* + * With ImageMagick 6.6.3 long and unsinged long were changed to + * ssize_t and size_t. This is only a problem for 64bits windows. + */ +static if (MagickLibVersion < 0x663 && c_ulong.sizeof != size_t.sizeof) +{ + static assert(0, "Only ImageMagick version 6.6.3 and up are supported on your platform"); +} + +extern(C) +{ + char* GetMagickHomeURL(); + + const(char)* GetMagickCopyright(); + + static if ( MagickLibVersion >= 0x681 ) + { + const(char)* GetMagickDelegates(); + } + + const(char)* GetMagickFeatures(); + const(char)* GetMagickPackageName(); + const(char)* GetMagickQuantumDepth(size_t*); + const(char)* GetMagickQuantumRange(size_t*); + const(char)* GetMagickReleaseDate(); + const(char)* GetMagickVersion(size_t*); + + static if ( MagickLibVersion >= 0x681 ) + { + void ListMagickVersion(FILE*); + } +} diff --git a/dmagick/c/quantum.d b/dmagick/c/quantum.d index f86d59c..0c2daa6 100644 --- a/dmagick/c/quantum.d +++ b/dmagick/c/quantum.d @@ -70,7 +70,7 @@ extern(C) alias ClampToQuantum RoundToQuantum; static pure nothrow Quantum ClampToQuantum(const MagickRealType value) { - version(MagickCore_HDRI) + static if(MagickHDRISupport) { return value; } @@ -86,7 +86,7 @@ extern(C) static pure nothrow ubyte ScaleQuantumToChar(const Quantum quantum) { - version(MagickCore_HDRI) + static if(MagickHDRISupport) { if ( quantum <= 0 ) return 0; diff --git a/dmagick/c/resample.d b/dmagick/c/resample.d index 80dfbb4..9dc2bbe 100644 --- a/dmagick/c/resample.d +++ b/dmagick/c/resample.d @@ -1,27 +1,17 @@ module dmagick.c.resample; -import dmagick.c.cacheView; -import dmagick.c.exception; -import dmagick.c.image; -import dmagick.c.magickType; import dmagick.c.magickVersion; -import dmagick.c.pixel; - -//A mixin with static if has problems with circular imports. (dmagick.c.image) -version(MagickCore_660) {} else -version(MagickCore_661) {} else -version(MagickCore_662) {} else -version(MagickCore_663) {} else -version(MagickCore_664) {} else -version(MagickCore_665) {} else -{ - version = MagickCore_666_and_up; -} extern(C) { - version ( MagickCore_666_and_up ) + static if ( MagickLibVersion >= 0x666 ) { + import dmagick.c.cacheView; + import dmagick.c.exception; + import dmagick.c.image; + import dmagick.c.magickType; + import dmagick.c.pixel; + /** * Used to adjust the filter algorithm used when resizing images. * Different filters experience varying degrees of success with @@ -78,6 +68,12 @@ extern(C) } else { + import dmagick.c.cacheView; + import dmagick.c.exception; + import dmagick.c.image; + import dmagick.c.magickType; + import dmagick.c.pixel; + enum FilterTypes { UndefinedFilter, diff --git a/windows.mak b/windows.mak index 7a587b9..4160adb 100644 --- a/windows.mak +++ b/windows.mak @@ -523,6 +523,13 @@ docs\c\xwindow.html: dmagick\c\xwindow.d ################### Library generation ######################### +dmagick\c\magickVersion.d: dmagick\c\magickVersion.d.in + @powershell -Command "get-content $** | \ + %{$$_ -replace '@MagickLibVersion@','700'} | \ + %{$$_ -replace '@MagickLibVersionText@','7.0.0'} | \ + %{$$_ -replace '@QuantumDepth@','16'} | \ + %{$$_ -replace '@HDRI@','false'} | Set-Content $@" + $(LIBNAME): $(SOURCE) $(DMD) -lib -of$(LIBNAME) $(DFLAGS) $(SOURCE) @@ -541,6 +548,7 @@ stubmain.d: echo void main(){} > $@ clean: + del dmagick\c\magickVersion.d del $(LIBNAME) del $(MAGICKCORELIBNAME) del $(DOCS) |
