libidn.framework and libidn.podspec for GNU Libidn
C Other
Failed to load latest commit information.
Framework Integrate libidn.framework and libidn.podspec into tests Feb 22, 2017
lib Dont require submodule Feb 23, 2017
libidn @ 42f5ab2
libidn.xcodeproj Allow app extension API only Feb 26, 2017


CI Status Version License Platform

From GNU IDN Library - Libidn

GNU Libidn is a fully documented implementation of the Stringprep, Punycode and IDNA specifications. Libidn's purpose is to encode and decode internationalized domain names. The native C, C# and Java libraries are available under the GNU Lesser General Public License version 2.1 or later.

The library contains a generic Stringprep implementation. Profiles for Nameprep, iSCSI, SASL, XMPP and Kerberos V5 are included. Punycode and ASCII Compatible Encoding (ACE) via IDNA are supported. A mechanism to define Top-Level Domain (TLD) specific validation tables, and to compare strings against those tables, is included. Default tables for some TLDs are also included.

This podspec uses a fork of libidn to fix a few minor issues related to CocoaPods integration.


To run the example project, clone the repo, and run pod install from the Example directory first.


libidn is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod "libidn"

Maintenance Notes

Upgrading libidn:

# Install build dependencies
$ brew install automake autoconf libtool gettext gtk-doc gengetopt
$ export PATH=${PATH}:/usr/local/opt/gettext/bin

$ cd libidn # This is the submodule containing upstream source
$ git remote add upstream git://
$ git fetch upstream
$ git checkout <newest upstream tag>
$ git checkout -b <newest upstream tag>-framework
$ git stash && git clean -f -dx
$ make bootstrap
$ ./configure --disable-dependency-tracking
$ make
$ git cherry-pick f37ce6fd7c1cdc4376c3a618dc2c0674f73551f6 429663138867992f5c716fa8c3578912e24f4005 55b9b9533816f1e049d789fb2218de3e997d8a45 42f5ab2dc63c857d664d713d899961371ed58c12

For future reference, libidn includes duplicates of system headers that confuses the build system. We gotta remove them.



libidn is available under the LGPL license, but the podspec and example code in this repo is MIT. See LICENSE for more details.