diff options
Diffstat (limited to 'vcpkg/ports/giflib')
| -rw-r--r-- | vcpkg/ports/giflib/CMakeLists.txt | 44 | ||||
| -rw-r--r-- | vcpkg/ports/giflib/exports.def | 55 | ||||
| -rw-r--r-- | vcpkg/ports/giflib/msvc.diff | 89 | ||||
| -rw-r--r-- | vcpkg/ports/giflib/portfile.cmake | 30 | ||||
| -rw-r--r-- | vcpkg/ports/giflib/usage | 4 | ||||
| -rw-r--r-- | vcpkg/ports/giflib/vcpkg-cmake-wrapper.cmake | 25 | ||||
| -rw-r--r-- | vcpkg/ports/giflib/vcpkg.json | 14 |
7 files changed, 261 insertions, 0 deletions
diff --git a/vcpkg/ports/giflib/CMakeLists.txt b/vcpkg/ports/giflib/CMakeLists.txt new file mode 100644 index 0000000..aa1fe7c --- /dev/null +++ b/vcpkg/ports/giflib/CMakeLists.txt @@ -0,0 +1,44 @@ +cmake_minimum_required(VERSION 3.5) + +project(giflib C) + +set(GIFLIB_EXPORTS "NOTFOUND" CACHE FILEPATH "The path of the DEF file listing the DLL exports.") + +set(GIFLIB_HEADERS + gif_lib.h +) + +set(GIFLIB_SOURCES + dgif_lib.c + egif_lib.c + gifalloc.c + gif_err.c + gif_font.c + gif_hash.c + openbsd-reallocarray.c +) + +add_definitions(-D_CRT_SECURE_NO_WARNINGS) + +include(CheckSymbolExists) +check_symbol_exists(reallocarray "stdlib.h" HAVE_REALLOCARRAY) +if(HAVE_REALLOCARRAY) + add_definitions(-DHAVE_REALLOCARRAY) +endif() + +add_library(gif ${GIFLIB_SOURCES}) +if(BUILD_SHARED_LIBS AND WIN32) + target_sources(gif PRIVATE "${GIFLIB_EXPORTS}") +else() + set(UNUSED "${GIFLIB_EXPORTS}") +endif() + +if (NOT GIFLIB_SKIP_HEADERS) + install(FILES ${GIFLIB_HEADERS} DESTINATION include) +endif () + +install(TARGETS gif + RUNTIME DESTINATION bin + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib +) diff --git a/vcpkg/ports/giflib/exports.def b/vcpkg/ports/giflib/exports.def new file mode 100644 index 0000000..5f3edb9 --- /dev/null +++ b/vcpkg/ports/giflib/exports.def @@ -0,0 +1,55 @@ +EXPORTS
+ DGifCloseFile @1
+ DGifExtensionToGCB @2
+ DGifGetCode @3
+ DGifGetCodeNext @4
+ DGifGetExtension @5
+ DGifGetExtensionNext @6
+ DGifGetImageDesc @7
+ DGifGetLZCodes @8
+ DGifGetLine @9
+ DGifGetPixel @10
+ DGifGetRecordType @11
+ DGifGetScreenDesc @12
+ DGifOpen @13
+ DGifOpenFileHandle @14
+ DGifOpenFileName @15
+ DGifSavedExtensionToGCB @16
+ DGifSlurp @17
+ EGifCloseFile @18
+ EGifGCBToExtension @19
+ EGifGCBToSavedExtension @20
+ EGifGetGifVersion @21
+ EGifOpen @22
+ EGifOpenFileHandle @23
+ EGifOpenFileName @24
+ EGifPutCode @25
+ EGifPutCodeNext @26
+ EGifPutComment @27
+ EGifPutExtension @28
+ EGifPutExtensionBlock @29
+ EGifPutExtensionLeader @30
+ EGifPutExtensionTrailer @31
+ EGifPutImageDesc @32
+ EGifPutLine @33
+ EGifPutPixel @34
+ EGifPutScreenDesc @35
+ EGifSetGifVersion @36
+ EGifSpew @37
+ FreeLastSavedImage @38
+ GifAddExtensionBlock @39
+ GifApplyTranslation @40
+ GifAsciiTable8x8 @41 DATA
+ GifBitSize @42
+ GifDrawBox @43
+ GifDrawBoxedText8x8 @44
+ GifDrawRectangle @45
+ GifDrawText8x8 @46
+ GifErrorString @47
+ GifFreeExtensions @48
+ GifFreeMapObject @49
+ GifFreeSavedImages @50
+ GifMakeMapObject @51
+ GifMakeSavedImage @52
+ GifUnionColorMap @53
+ openbsd_reallocarray @54
diff --git a/vcpkg/ports/giflib/msvc.diff b/vcpkg/ports/giflib/msvc.diff new file mode 100644 index 0000000..30ee894 --- /dev/null +++ b/vcpkg/ports/giflib/msvc.diff @@ -0,0 +1,89 @@ +diff --git a/dgif_lib.c b/dgif_lib.c +index cbcf23f..15dee84 100644 +--- a/dgif_lib.c ++++ b/dgif_lib.c +@@ -57,7 +57,7 @@ GifFileType *DGifOpenFileName(const char *FileName, int *Error) { + int FileHandle; + GifFileType *GifFile; + +- if ((FileHandle = open(FileName, O_RDONLY)) == -1) { ++ if ((FileHandle = _open(FileName, O_RDONLY)) == -1) { + if (Error != NULL) { + *Error = D_GIF_ERR_OPEN_FAILED; + } +@@ -84,7 +84,7 @@ GifFileType *DGifOpenFileHandle(int FileHandle, int *Error) { + if (Error != NULL) { + *Error = D_GIF_ERR_NOT_ENOUGH_MEM; + } +- (void)close(FileHandle); ++ (void)_close(FileHandle); + return NULL; + } + +@@ -99,7 +99,7 @@ GifFileType *DGifOpenFileHandle(int FileHandle, int *Error) { + if (Error != NULL) { + *Error = D_GIF_ERR_NOT_ENOUGH_MEM; + } +- (void)close(FileHandle); ++ (void)_close(FileHandle); + free((char *)GifFile); + return NULL; + } +@@ -110,7 +110,7 @@ GifFileType *DGifOpenFileHandle(int FileHandle, int *Error) { + _setmode(FileHandle, O_BINARY); /* Make sure it is in binary mode. */ + #endif /* _WIN32 */ + +- f = fdopen(FileHandle, "rb"); /* Make it into a stream: */ ++ f = _fdopen(FileHandle, "rb"); /* Make it into a stream: */ + + /*@-mustfreeonly@*/ + GifFile->Private = (void *)Private; +diff --git a/egif_lib.c b/egif_lib.c +index 1526868..6644eed 100644 +--- a/egif_lib.c ++++ b/egif_lib.c +@@ -64,10 +64,10 @@ GifFileType *EGifOpenFileName(const char *FileName, const bool TestExistence, + GifFileType *GifFile; + + if (TestExistence) { +- FileHandle = open(FileName, O_WRONLY | O_CREAT | O_EXCL, ++ FileHandle = _open(FileName, O_WRONLY | O_CREAT | O_EXCL, + S_IREAD | S_IWRITE); + } else { +- FileHandle = open(FileName, O_WRONLY | O_CREAT | O_TRUNC, ++ FileHandle = _open(FileName, O_WRONLY | O_CREAT | O_TRUNC, + S_IREAD | S_IWRITE); + } + +@@ -79,7 +79,7 @@ GifFileType *EGifOpenFileName(const char *FileName, const bool TestExistence, + } + GifFile = EGifOpenFileHandle(FileHandle, Error); + if (GifFile == (GifFileType *)NULL) { +- (void)close(FileHandle); ++ (void)_close(FileHandle); + } + return GifFile; + } +@@ -125,7 +125,7 @@ GifFileType *EGifOpenFileHandle(const int FileHandle, int *Error) { + _setmode(FileHandle, O_BINARY); /* Make sure it is in binary mode. */ + #endif /* _WIN32 */ + +- f = fdopen(FileHandle, "wb"); /* Make it into a stream: */ ++ f = _fdopen(FileHandle, "wb"); /* Make it into a stream: */ + + GifFile->Private = (void *)Private; + Private->FileHandle = FileHandle; +diff --git a/gif_font.c b/gif_font.c +index 75f9731..c215795 100644 +--- a/gif_font.c ++++ b/gif_font.c +@@ -200,6 +200,9 @@ void GifDrawRectangle(SavedImage *Image, const int x, const int y, const int w, + } + } + ++#ifdef _MSC_VER ++# define strtok_r strtok_s ++#endif + void GifDrawBoxedText8x8(SavedImage *Image, const int x, const int y, + const char *legend, const int border, const int bg, + const int fg) { diff --git a/vcpkg/ports/giflib/portfile.cmake b/vcpkg/ports/giflib/portfile.cmake new file mode 100644 index 0000000..c40de0f --- /dev/null +++ b/vcpkg/ports/giflib/portfile.cmake @@ -0,0 +1,30 @@ +set(EXTRA_PATCHES "") +if (VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) + list(APPEND EXTRA_PATCHES msvc.diff) +endif() + +vcpkg_from_sourceforge( + OUT_SOURCE_PATH SOURCE_PATH + REPO "giflib" + FILENAME "giflib-${VERSION}.tar.gz" + SHA512 0865ab2b1904fa14640c655fdb14bb54244ad18a66e358565c00287875d00912343f9be8bfac7658cc0146200d626f7ec9160d7a339f20ba3be6b9941d73975f + PATCHES + ${EXTRA_PATCHES} +) + +file(COPY "${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt" DESTINATION "${SOURCE_PATH}") + +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}" + OPTIONS + "-DGIFLIB_EXPORTS=${CMAKE_CURRENT_LIST_DIR}/exports.def" + OPTIONS_DEBUG + -DGIFLIB_SKIP_HEADERS=ON +) + +vcpkg_cmake_install() +vcpkg_copy_pdbs() + +file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/gif") +file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/COPYING") diff --git a/vcpkg/ports/giflib/usage b/vcpkg/ports/giflib/usage new file mode 100644 index 0000000..ebd07d1 --- /dev/null +++ b/vcpkg/ports/giflib/usage @@ -0,0 +1,4 @@ +The package giflib is compatible with built-in CMake targets:
+
+ find_package(GIF REQUIRED)
+ target_link_libraries(main PRIVATE GIF::GIF)
diff --git a/vcpkg/ports/giflib/vcpkg-cmake-wrapper.cmake b/vcpkg/ports/giflib/vcpkg-cmake-wrapper.cmake new file mode 100644 index 0000000..52ae01f --- /dev/null +++ b/vcpkg/ports/giflib/vcpkg-cmake-wrapper.cmake @@ -0,0 +1,25 @@ +find_path(GIF_INCLUDE_DIR NAMES gif_lib.h PATHS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/include" NO_DEFAULT_PATH)
+find_library(GIF_LIBRARY_RELEASE NAMES gif PATHS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib" NO_DEFAULT_PATH)
+find_library(GIF_LIBRARY_DEBUG NAMES gif PATHS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug/lib" NO_DEFAULT_PATH)
+include(SelectLibraryConfigurations)
+select_library_configurations(GIF)
+set(GIF_LIBRARY "${GIF_LIBRARY}" CACHE STRING "")
+unset(GIF_LIBRARY)
+unset(GIF_FOUND)
+if(NOT TARGET GIF::GIF)
+ add_library(GIF::GIF UNKNOWN IMPORTED)
+ set_target_properties(GIF::GIF PROPERTIES
+ INTERFACE_INCLUDE_DIRECTORIES "${GIF_INCLUDE_DIR}"
+ IMPORTED_CONFIGURATIONS RELEASE
+ IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "C"
+ IMPORTED_LOCATION_RELEASE "${GIF_LIBRARY_RELEASE}"
+ )
+ if(GIF_LIBRARY_DEBUG)
+ set_property(TARGET GIF::GIF APPEND PROPERTY
+ IMPORTED_CONFIGURATIONS DEBUG)
+ set_target_properties(GIF::GIF PROPERTIES
+ IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "C"
+ IMPORTED_LOCATION_DEBUG "${GIF_LIBRARY_DEBUG}")
+ endif()
+endif()
+_find_package(${ARGS})
diff --git a/vcpkg/ports/giflib/vcpkg.json b/vcpkg/ports/giflib/vcpkg.json new file mode 100644 index 0000000..893adc1 --- /dev/null +++ b/vcpkg/ports/giflib/vcpkg.json @@ -0,0 +1,14 @@ +{ + "name": "giflib", + "version": "5.2.2", + "port-version": 2, + "description": "A library for reading and writing gif images.", + "homepage": "https://sourceforge.net/projects/giflib/", + "license": "MIT", + "dependencies": [ + { + "name": "vcpkg-cmake", + "host": true + } + ] +} |