aboutsummaryrefslogtreecommitdiff
path: root/ports/libflac
diff options
context:
space:
mode:
authorJan HrubĂ˝ <jhruby.web@gmail.com>2017-03-13 08:56:05 +0100
committerGitHub <noreply@github.com>2017-03-13 08:56:05 +0100
commit665f4118f603c5858217ed7a2f2f824b18ff4fc5 (patch)
treef0167041edf71e90f2331b5025f603392a8de67a /ports/libflac
parent1bec0fcb73073b5b1719f454c368a63f1bff625e (diff)
parent1c9873a0daf625f67474aaf3e163c592c27ecb65 (diff)
downloadvcpkg-665f4118f603c5858217ed7a2f2f824b18ff4fc5.tar.gz
vcpkg-665f4118f603c5858217ed7a2f2f824b18ff4fc5.zip
Merge pull request #1 from Microsoft/master
pull
Diffstat (limited to 'ports/libflac')
-rw-r--r--ports/libflac/CMakeLists.txt81
-rw-r--r--ports/libflac/CONTROL4
-rw-r--r--ports/libflac/portfile.cmake42
3 files changed, 127 insertions, 0 deletions
diff --git a/ports/libflac/CMakeLists.txt b/ports/libflac/CMakeLists.txt
new file mode 100644
index 000000000..a9f1afc5e
--- /dev/null
+++ b/ports/libflac/CMakeLists.txt
@@ -0,0 +1,81 @@
+cmake_minimum_required(VERSION 2.6)
+cmake_policy(SET CMP0005 NEW) # do not escape preprocessor defines
+
+project(libflac)
+
+if(NOT DEFINED LIBFLAC_ARCHITECTURE)
+ message(FATAL_ERROR "Target architecture not specified")
+endif()
+
+file(GLOB LIBFLAC_SOURCES
+ ${PROJECT_SOURCE_DIR}/src/libFLAC/*.c
+ ${PROJECT_SOURCE_DIR}/src/share/win_utf8_io/win_utf8_io.c)
+
+file(GLOB LIBFLACXX_SOURCES
+ ${PROJECT_SOURCE_DIR}/src/libFLAC++/*.cpp)
+
+include_directories(${PROJECT_SOURCE_DIR}/include)
+include_directories(${PROJECT_SOURCE_DIR}/src/libFLAC/include)
+
+if(NOT LIBFLAC_ARCHITECTURE MATCHES arm)
+ add_definitions(-DFLAC__SSE_OS)
+ add_definitions(-DFLAC__HAS_X86INTRIN)
+endif()
+
+if(LIBFLAC_ARCHITECTURE MATCHES x86)
+ add_definitions(-DFLAC__CPU_IA32)
+ add_definitions(-DFLAC__HAS_NASM)
+ enable_language(ASM_NASM)
+ list(APPEND LIBFLAC_SOURCES
+ src/libFLAC/ia32/cpu_asm.nasm
+ src/libFLAC/ia32/fixed_asm.nasm
+ src/libFLAC/ia32/lpc_asm.nasm)
+ set(CMAKE_ASM_NASM_FLAGS "-i${PROJECT_SOURCE_DIR}/src/libFLAC/ia32/ -f win32 -d OBJ_FORMAT_win32")
+elseif(LIBFLAC_ARCHITECTURE MATCHES x64)
+ add_definitions(-DFLAC__CPU_X86_64)
+ add_definitions(-DENABLE_64_BIT_WORDS)
+endif()
+
+if(CMAKE_BUILD_TYPE MATCHES Debug)
+ add_definitions(-DFLAC__OVERFLOW_DETECT)
+endif()
+
+add_definitions(-DPACKAGE_VERSION="1.3.2")
+add_definitions(-DFLAC__HAS_OGG)
+add_definitions(-DFLAC__ALIGN_MALLOC_DATA) # 32 byte boundary
+add_definitions(-D_CRT_SECURE_NO_WARNINGS)
+add_definitions(-D_CRT_NONSTDC_NO_WARNINGS)
+
+add_library(libFLAC ${LIBFLAC_SOURCES})
+add_library(libFLACXX ${LIBFLACXX_SOURCES})
+
+set_target_properties(libFLAC PROPERTIES OUTPUT_NAME flac)
+set_target_properties(libFLACXX PROPERTIES OUTPUT_NAME flac++)
+
+find_library(OGG_LIBRARY ogg)
+find_path(OGG_INCLUDE_DIR ogg/ogg.h)
+
+include_directories(${OGG_INCLUDE_DIR})
+target_link_libraries(libFLAC ${OGG_LIBRARY})
+target_link_libraries(libFLACXX libFLAC)
+
+if(BUILD_SHARED_LIBS)
+ set_target_properties(libFLACXX PROPERTIES COMPILE_FLAGS -DFLACPP_API_EXPORTS)
+ set_target_properties(libFLAC PROPERTIES COMPILE_FLAGS -DFLAC_API_EXPORTS)
+else()
+ add_definitions(-DFLAC__NO_DLL)
+endif()
+
+install(TARGETS libFLAC libFLACXX
+ RUNTIME DESTINATION bin
+ ARCHIVE DESTINATION lib
+ LIBRARY DESTINATION lib)
+
+if(NOT DEFINED LIBFLAC_SKIP_HEADERS)
+ install(DIRECTORY ${PROJECT_SOURCE_DIR}/include/FLAC/
+ DESTINATION include/FLAC
+ FILES_MATCHING PATTERN "*.h")
+ install(DIRECTORY ${PROJECT_SOURCE_DIR}/include/FLAC++/
+ DESTINATION include/FLAC++
+ FILES_MATCHING PATTERN "*.h")
+endif()
diff --git a/ports/libflac/CONTROL b/ports/libflac/CONTROL
new file mode 100644
index 000000000..52878673d
--- /dev/null
+++ b/ports/libflac/CONTROL
@@ -0,0 +1,4 @@
+Source: libflac
+Version: 1.3.2-1
+Description: Library for manipulating FLAC files
+Build-Depends: libogg
diff --git a/ports/libflac/portfile.cmake b/ports/libflac/portfile.cmake
new file mode 100644
index 000000000..cbf7d6fd3
--- /dev/null
+++ b/ports/libflac/portfile.cmake
@@ -0,0 +1,42 @@
+ # libFLAC uses winapi functions not available in WindowsStore
+if (VCPKG_CMAKE_SYSTEM_NAME STREQUAL WindowsStore)
+ message(FATAL_ERROR "Error: UWP builds are currently not supported.")
+endif()
+
+include(vcpkg_common_functions)
+set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/flac-1.3.2)
+vcpkg_download_distfile(ARCHIVE
+ URLS "http://downloads.xiph.org/releases/flac/flac-1.3.2.tar.xz"
+ FILENAME "flac-1.3.2.tar.xz"
+ SHA512 63910e8ebbe508316d446ffc9eb6d02efbd5f47d29d2ea7864da9371843c8e671854db6e89ba043fe08aef1845b8ece70db80f1cce853f591ca30d56ef7c3a15)
+
+vcpkg_extract_source_archive(${ARCHIVE})
+
+if(VCPKG_TARGET_ARCHITECTURE STREQUAL x86)
+ vcpkg_find_acquire_program(NASM)
+ get_filename_component(NASM_EXE_PATH ${NASM} DIRECTORY)
+ set(ENV{PATH} "$ENV{PATH};${NASM_EXE_PATH}")
+endif()
+
+file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH})
+
+vcpkg_configure_cmake(
+ SOURCE_PATH ${SOURCE_PATH}
+ PREFER_NINJA
+ OPTIONS
+ -DLIBFLAC_ARCHITECTURE=${VCPKG_TARGET_ARCHITECTURE}
+ OPTIONS_DEBUG
+ -DLIBFLAC_SKIP_HEADERS=ON)
+
+vcpkg_install_cmake()
+vcpkg_copy_pdbs()
+
+if(VCPKG_LIBRARY_LINKAGE STREQUAL static)
+ file(APPEND ${CURRENT_PACKAGES_DIR}/include/FLAC/export.h "#undef FLAC_API\n#define FLAC_API\n")
+ file(APPEND ${CURRENT_PACKAGES_DIR}/include/FLAC++/export.h "#undef FLACPP_API\n#define FLACPP_API\n")
+endif()
+
+# This license (BSD) is relevant only for library - if someone would want to install
+# FLAC cmd line tools as well additional license (GPL) should be included
+file(COPY ${SOURCE_PATH}/COPYING.Xiph DESTINATION ${CURRENT_PACKAGES_DIR}/share/libflac)
+file(RENAME ${CURRENT_PACKAGES_DIR}/share/libflac/COPYING.Xiph ${CURRENT_PACKAGES_DIR}/share/libflac/copyright)