Actually, regarding ftconfig.h generation. There are two files (plus two more for Amiga and VMS...):

./include/freetype/config/ftconfig.h
./builds/unix/ftconfig.in

The first is called "ANSI-specific configuration file", the second "UNIX [...]". Why are there two files? The configure/Makefile system seems to always install the second on Linux. Why do we need the first then, for everything else? There are various #define differences between the two -- is this... intended? What would it take to unify the config.h files for all platforms?

Is it necessary to have HAVE_UNISTD_H, HAVE_FCNTL_H and HAVE_STDINT_H #define'd in ftconfig.h (I know the Makefiles do this) or would this suffice:
```
if (UNIX)
  if (HAVE_UNISTD_H)
    target_compile_definitions(freetype PRIVATE HAVE_UNISTD_H=1)
  endif ()
  if (HAVE_FCNTL_H)
    target_compile_definitions(freetype PRIVATE HAVE_FCNTL_H=1)
  endif ()
  if (HAVE_STDINT_H)
    target_compile_definitions(freetype PRIVATE HAVE_STDINT_H=1)
  endif ()
endif ()
```

Also, CMake comes with the configure_file() command[1], which substitutes ${VAR} or @VAR@ with stuff or (un)defines things with #cmakedefine. We can't really use it here because the ftconfig.* files don't contain variables to expand. I guess because we aren't using the (full) Autotools stack? I'd like to have one config.h for all platforms that I can fill in from all build systems.

Also also, do we still need the macOS Framework stuff? Is it maybe redundant in later versions?


[1]: https://cmake.org/cmake/help/v3.11/command/configure_file.html

_______________________________________________
Freetype-devel mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/freetype-devel

Reply via email to