freetype
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [ft] CMakeLists.txt patch


From: John Cary
Subject: Re: [ft] CMakeLists.txt patch
Date: Mon, 10 Aug 2015 17:39:29 -0600
User-agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.1.0

Hi Werner!

What value do you expect in LIBSTATIC_CONFIG?

Thx...John

On 8/2/2015 10:53 AM, Werner LEMBERG wrote:
Hello John!


To ensure not built shared on Windows, which does not work
due to lack of declspec's.  Adds versioning of shared libraries.
Thanks.  This is now applied to the git repository, with slight
modifications.

Adds creation of freetype-config on unix.
Below you can see what I currently have.  Note that one central
variable in `freetype-config.in' is still missing: %LIBSTATIC_CONFIG%.
This exposes a weakness present in most `FindXXX.cmake' modules that
come with cmake itself: There is no support for getting the static
libraries necessary for linking.

I don't know how to handle this gracefully.

Additionally, I think it would be better if cmake doesn't generate the
script `freetype-config' but rather the pkg-config module
`freetype2.pc' (from `freetype2.in').  However, this leads to exactly
the same problem, namely getting a proper substitute for
`%REQUIRES_PRIVATE%'...


     Werner


======================================================================


diff --git a/CMakeLists.txt b/CMakeLists.txt
index edcb64e..b3de1cf 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -355,6 +355,34 @@ if (HARFBUZZ_FOUND)
  endif ()
+# Create the `freetype-config' file
+if (UNIX)
+  message(STATUS
+    "Creating directory ${PROJECT_BINARY_DIR}/builds/unix")
+  file(MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/builds/unix")
+
+  message(STATUS
+    "Creating file ${PROJECT_BINARY_DIR}/builds/unix/freetype-config")
+
+  file(READ "${PROJECT_SOURCE_DIR}/builds/unix/freetype-config.in"
+    FREETYPE_CONFIG_IN)
+  string(REPLACE "%ft_version%" "${SHARED_LIBRARY_VERSION}"
+    FREETYPE_CONFIG_IN "${FREETYPE_CONFIG_IN}")
+  string(REPLACE "%prefix%" "${CMAKE_INSTALL_PREFIX}"
+    FREETYPE_CONFIG_IN "${FREETYPE_CONFIG_IN}")
+  string(REPLACE "%exec_prefix%" "${CMAKE_INSTALL_PREFIX}"
+    FREETYPE_CONFIG_IN "${FREETYPE_CONFIG_IN}")
+  string(REPLACE "%exec_prefix_set%" "no"
+    FREETYPE_CONFIG_IN "${FREETYPE_CONFIG_IN}")
+  string(REPLACE "%includedir%" "${CMAKE_INSTALL_PREFIX}/include"
+    FREETYPE_CONFIG_IN "${FREETYPE_CONFIG_IN}")
+  string(REPLACE "%libdir%" "${CMAKE_INSTALL_PREFIX}/lib"
+    FREETYPE_CONFIG_IN "${FREETYPE_CONFIG_IN}")
+  file(WRITE "${PROJECT_BINARY_DIR}/builds/unix/freetype-config"
+    "${FREETYPE_CONFIG_IN}")
+endif ()
+
+
  # Installations
  # Note the trailing slash in the argument to the `DIRECTORY' directive
  install(DIRECTORY ${PROJECT_SOURCE_DIR}/include/
@@ -368,6 +396,12 @@ install(FILES
    ${PROJECT_BINARY_DIR}/include/freetype/config/ftoption.h
    DESTINATION include/freetype2/freetype/config
  )
+if (UNIX)
+  install(PROGRAMS
+    ${PROJECT_BINARY_DIR}/builds/unix/freetype-config
+    DESTINATION bin
+  )
+endif ()
  install(TARGETS freetype
    RUNTIME DESTINATION bin
    LIBRARY DESTINATION lib





reply via email to

[Prev in Thread] Current Thread [Next in Thread]