@ -1 +1 @@ | |||||
Subproject commit 984c8d11e9c041d81c5e28bc252e4e4f9613014d | |||||
Subproject commit c428d80e48f462c3fdc40588620ccb182ed7c429 |
@ -0,0 +1,16 @@ | |||||
BasedOnStyle: Chromium | |||||
AlignAfterOpenBracket: Align | |||||
AlignConsecutiveAssignments: true | |||||
AlignConsecutiveDeclarations: true | |||||
AlignConsecutiveMacros: true | |||||
AlignEscapedNewlines: true | |||||
# AlignOperands: Align | |||||
AlignTrailingComments: true | |||||
AlwaysBreakAfterReturnType: AllDefinitions | |||||
BreakBeforeBraces: Allman | |||||
ColumnLimit: 80 | |||||
DerivePointerAlignment: false | |||||
IndentCaseLabels: false | |||||
PointerAlignment: Left | |||||
SpaceBeforeParens: ControlStatements | |||||
SpacesInParentheses: true |
@ -0,0 +1,588 @@ | |||||
# CMakeLists.txt | |||||
# | |||||
# Copyright (C) 2013-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# Written originally by John Cary <cary@txcorp.com> | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
# | |||||
# | |||||
# The following will 1. create a build directory and 2. change into it and | |||||
# call cmake to configure the build with default parameters as a static | |||||
# library. See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html | |||||
# for information about Debug, Release, etc. builds. | |||||
# | |||||
# cmake -B build -D CMAKE_BUILD_TYPE=Release | |||||
# | |||||
# For a dynamic library, use | |||||
# | |||||
# cmake -B build -D BUILD_SHARED_LIBS=true -D CMAKE_BUILD_TYPE=Release | |||||
# | |||||
# For a framework on OS X, use | |||||
# | |||||
# cmake -E chdir build cmake -G Xcode -D BUILD_FRAMEWORK:BOOL=true .. | |||||
# | |||||
# For an iOS static library, use | |||||
# | |||||
# cmake -E chdir build cmake -G Xcode -D IOS_PLATFORM=OS .. | |||||
# | |||||
# or | |||||
# | |||||
# cmake -E chdir build cmake -G Xcode -D IOS_PLATFORM=SIMULATOR .. | |||||
# | |||||
# or | |||||
# | |||||
# cmake -E chdir build cmake -G Xcode -D IOS_PLATFORM=SIMULATOR64 .. | |||||
# | |||||
# Finally, build the project with: | |||||
# | |||||
# cmake --build build | |||||
# | |||||
# Install it with | |||||
# | |||||
# (sudo) cmake --build build --target install | |||||
# | |||||
# A binary distribution can be made with | |||||
# | |||||
# cmake --build build --config Release --target package | |||||
# | |||||
# Please refer to the cmake manual for further options, in particular, how | |||||
# to modify compilation and linking parameters. | |||||
# | |||||
# Some notes. | |||||
# | |||||
# . `cmake' creates configuration files in | |||||
# | |||||
# <build-directory>/include/freetype/config | |||||
# | |||||
# which should be further modified if necessary. | |||||
# | |||||
# . You can use `cmake' directly on a freshly cloned FreeType git | |||||
# repository. | |||||
# | |||||
# . `CMakeLists.txt' is provided as-is since it is normally not used by the | |||||
# developer team. | |||||
# | |||||
# . Set the `FT_WITH_ZLIB', `FT_WITH_BZIP2', `FT_WITH_PNG', | |||||
# `FT_WITH_HARFBUZZ', and `FT_WITH_BROTLI' CMake variables to `ON' to | |||||
# force using a dependency. Leave a variable undefined (which is the | |||||
# default) to use the dependency only if it is available. Example: | |||||
# | |||||
# cmake -B build -D FT_WITH_ZLIB=ON \ | |||||
# -D FT_WITH_BZIP2=ON \ | |||||
# -D FT_WITH_PNG=ON \ | |||||
# -D FT_WITH_HARFBUZZ=ON \ | |||||
# -D FT_WITH_BROTLI=ON [...] | |||||
# | |||||
# Set `CMAKE_DISABLE_FIND_PACKAGE_XXX=TRUE' to disable a dependency completely | |||||
# (where `XXX' is a CMake package name like `BZip2'). Example for disabling all | |||||
# dependencies: | |||||
# | |||||
# cmake -B build -D CMAKE_DISABLE_FIND_PACKAGE_ZLIB=TRUE \ | |||||
# -D CMAKE_DISABLE_FIND_PACKAGE_BZip2=TRUE \ | |||||
# -D CMAKE_DISABLE_FIND_PACKAGE_PNG=TRUE \ | |||||
# -D CMAKE_DISABLE_FIND_PACKAGE_HarfBuzz=TRUE \ | |||||
# -D CMAKE_DISABLE_FIND_PACKAGE_BrotliDec=TRUE [...] | |||||
# | |||||
# . Installation of FreeType can be controlled with the CMake variables | |||||
# `SKIP_INSTALL_HEADERS', `SKIP_INSTALL_LIBRARIES', and `SKIP_INSTALL_ALL' | |||||
# (this is compatible with the same CMake variables in zlib's CMake | |||||
# support). | |||||
# FreeType explicitly marks the API to be exported and relies on the compiler | |||||
# to hide all other symbols. CMake supports a C_VISBILITY_PRESET property | |||||
# starting with 2.8.12. | |||||
cmake_minimum_required(VERSION 2.8.12) | |||||
if (NOT CMAKE_VERSION VERSION_LESS 3.3) | |||||
# Allow symbol visibility settings also on static libraries. CMake < 3.3 | |||||
# only sets the property on a shared library build. | |||||
cmake_policy(SET CMP0063 NEW) | |||||
# Support new IN_LIST if() operator. | |||||
cmake_policy(SET CMP0057 NEW) | |||||
endif () | |||||
include(CheckIncludeFile) | |||||
# CMAKE_TOOLCHAIN_FILE must be set before `project' is called, which | |||||
# configures the base build environment and references the toolchain file | |||||
if (APPLE) | |||||
if (DEFINED IOS_PLATFORM) | |||||
if (NOT "${IOS_PLATFORM}" STREQUAL "OS" | |||||
AND NOT "${IOS_PLATFORM}" STREQUAL "SIMULATOR" | |||||
AND NOT "${IOS_PLATFORM}" STREQUAL "SIMULATOR64") | |||||
message(FATAL_ERROR | |||||
"IOS_PLATFORM must be set to either OS, SIMULATOR, or SIMULATOR64") | |||||
endif () | |||||
if (NOT "${CMAKE_GENERATOR}" STREQUAL "Xcode") | |||||
message(AUTHOR_WARNING | |||||
"You should use Xcode generator with IOS_PLATFORM enabled to get Universal builds.") | |||||
endif () | |||||
if (BUILD_SHARED_LIBS) | |||||
message(FATAL_ERROR | |||||
"BUILD_SHARED_LIBS can not be on with IOS_PLATFORM enabled") | |||||
endif () | |||||
if (BUILD_FRAMEWORK) | |||||
message(FATAL_ERROR | |||||
"BUILD_FRAMEWORK can not be on with IOS_PLATFORM enabled") | |||||
endif () | |||||
# iOS only uses static libraries | |||||
set(BUILD_SHARED_LIBS OFF) | |||||
set(CMAKE_TOOLCHAIN_FILE | |||||
${CMAKE_SOURCE_DIR}/builds/cmake/iOS.cmake) | |||||
endif () | |||||
else () | |||||
if (DEFINED IOS_PLATFORM) | |||||
message(FATAL_ERROR "IOS_PLATFORM is not supported on this platform") | |||||
endif () | |||||
endif () | |||||
project(freetype C) | |||||
set(VERSION_MAJOR "2") | |||||
set(VERSION_MINOR "11") | |||||
set(VERSION_PATCH "0") | |||||
# Generate LIBRARY_VERSION and LIBRARY_SOVERSION. | |||||
set(LIBTOOL_REGEX "version_info='([0-9]+):([0-9]+):([0-9]+)'") | |||||
file(STRINGS "${PROJECT_SOURCE_DIR}/builds/unix/configure.raw" | |||||
VERSION_INFO | |||||
REGEX ${LIBTOOL_REGEX}) | |||||
string(REGEX REPLACE | |||||
${LIBTOOL_REGEX} "\\1" | |||||
LIBTOOL_CURRENT "${VERSION_INFO}") | |||||
string(REGEX REPLACE | |||||
${LIBTOOL_REGEX} "\\2" | |||||
LIBTOOL_REVISION "${VERSION_INFO}") | |||||
string(REGEX REPLACE | |||||
${LIBTOOL_REGEX} "\\3" | |||||
LIBTOOL_AGE "${VERSION_INFO}") | |||||
# This is what libtool does internally on Unix platforms. | |||||
math(EXPR LIBRARY_SOVERSION "${LIBTOOL_CURRENT} - ${LIBTOOL_AGE}") | |||||
set(LIBRARY_VERSION "${LIBRARY_SOVERSION}.${LIBTOOL_AGE}.${LIBTOOL_REVISION}") | |||||
# External dependency library detection is automatic. See the notes at the top | |||||
# of this file, for how to force or disable dependencies completely. | |||||
option(FT_WITH_ZLIB "Use system zlib instead of internal library." OFF) | |||||
option(FT_WITH_BZIP2 "Support bzip2 compressed fonts." OFF) | |||||
option(FT_WITH_PNG "Support PNG compressed OpenType embedded bitmaps." OFF) | |||||
option(FT_WITH_HARFBUZZ "Improve auto-hinting of OpenType fonts." OFF) | |||||
option(FT_WITH_BROTLI "Support compressed WOFF2 fonts." OFF) | |||||
# Disallow in-source builds | |||||
if ("${CMAKE_BINARY_DIR}" STREQUAL "${CMAKE_SOURCE_DIR}") | |||||
message(FATAL_ERROR | |||||
"In-source builds are not permitted! Make a separate folder for" | |||||
" building, e.g.,\n" | |||||
" cmake -E make_directory build\n" | |||||
" cmake -E chdir build cmake ..\n" | |||||
"Before that, remove the files created by this failed run with\n" | |||||
" cmake -E remove CMakeCache.txt\n" | |||||
" cmake -E remove_directory CMakeFiles") | |||||
endif () | |||||
# Add local cmake modules | |||||
list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/builds/cmake) | |||||
if (BUILD_FRAMEWORK) | |||||
if (NOT "${CMAKE_GENERATOR}" STREQUAL "Xcode") | |||||
message(FATAL_ERROR | |||||
"You should use Xcode generator with BUILD_FRAMEWORK enabled") | |||||
endif () | |||||
set(CMAKE_OSX_ARCHITECTURES "$(ARCHS_STANDARD_32_64_BIT)") | |||||
set(BUILD_SHARED_LIBS ON) | |||||
endif () | |||||
# Find dependencies | |||||
set(HARFBUZZ_MIN_VERSION "2.0.0") | |||||
if (FT_WITH_HARFBUZZ) | |||||
find_package(HarfBuzz ${HARFBUZZ_MIN_VERSION} REQUIRED) | |||||
else () | |||||
find_package(HarfBuzz ${HARFBUZZ_MIN_VERSION}) | |||||
endif () | |||||
if (FT_WITH_PNG) | |||||
find_package(PNG REQUIRED) | |||||
else () | |||||
find_package(PNG) | |||||
endif () | |||||
if (FT_WITH_ZLIB) | |||||
find_package(ZLIB REQUIRED) | |||||
else () | |||||
find_package(ZLIB) | |||||
endif () | |||||
if (FT_WITH_BZIP2) | |||||
find_package(BZip2 REQUIRED) | |||||
else () | |||||
find_package(BZip2) | |||||
endif () | |||||
if (FT_WITH_BROTLI) | |||||
find_package(BrotliDec REQUIRED) | |||||
else () | |||||
find_package(BrotliDec) | |||||
endif () | |||||
# Create the configuration file | |||||
if (UNIX) | |||||
check_include_file("unistd.h" HAVE_UNISTD_H) | |||||
check_include_file("fcntl.h" HAVE_FCNTL_H) | |||||
file(READ "${PROJECT_SOURCE_DIR}/builds/unix/ftconfig.h.in" | |||||
FTCONFIG_H) | |||||
if (HAVE_UNISTD_H) | |||||
string(REGEX REPLACE | |||||
"#undef +(HAVE_UNISTD_H)" "#define \\1 1" | |||||
FTCONFIG_H "${FTCONFIG_H}") | |||||
endif () | |||||
if (HAVE_FCNTL_H) | |||||
string(REGEX REPLACE | |||||
"#undef +(HAVE_FCNTL_H)" "#define \\1 1" | |||||
FTCONFIG_H "${FTCONFIG_H}") | |||||
endif () | |||||
else () | |||||
file(READ "${PROJECT_SOURCE_DIR}/include/freetype/config/ftconfig.h" | |||||
FTCONFIG_H) | |||||
endif () | |||||
set(FTCONFIG_H_NAME "${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h") | |||||
if (EXISTS "${FTCONFIG_H_NAME}") | |||||
file(READ "${FTCONFIG_H_NAME}" ORIGINAL_FTCONFIG_H) | |||||
else () | |||||
set(ORIGINAL_FTCONFIG_H "") | |||||
endif () | |||||
if (NOT (ORIGINAL_FTCONFIG_H STREQUAL FTCONFIG_H)) | |||||
file(WRITE "${FTCONFIG_H_NAME}" "${FTCONFIG_H}") | |||||
endif () | |||||
# Create the options file | |||||
file(READ "${PROJECT_SOURCE_DIR}/include/freetype/config/ftoption.h" | |||||
FTOPTION_H) | |||||
if (ZLIB_FOUND) | |||||
string(REGEX REPLACE | |||||
"/\\* +(#define +FT_CONFIG_OPTION_SYSTEM_ZLIB) +\\*/" "\\1" | |||||
FTOPTION_H "${FTOPTION_H}") | |||||
endif () | |||||
if (BZIP2_FOUND) | |||||
string(REGEX REPLACE | |||||
"/\\* +(#define +FT_CONFIG_OPTION_USE_BZIP2) +\\*/" "\\1" | |||||
FTOPTION_H "${FTOPTION_H}") | |||||
endif () | |||||
if (PNG_FOUND) | |||||
string(REGEX REPLACE | |||||
"/\\* +(#define +FT_CONFIG_OPTION_USE_PNG) +\\*/" "\\1" | |||||
FTOPTION_H "${FTOPTION_H}") | |||||
endif () | |||||
if (HARFBUZZ_FOUND) | |||||
string(REGEX REPLACE | |||||
"/\\* +(#define +FT_CONFIG_OPTION_USE_HARFBUZZ) +\\*/" "\\1" | |||||
FTOPTION_H "${FTOPTION_H}") | |||||
endif () | |||||
if (BROTLIDEC_FOUND) | |||||
string(REGEX REPLACE | |||||
"/\\* +(#define +FT_CONFIG_OPTION_USE_BROTLI) +\\*/" "\\1" | |||||
FTOPTION_H "${FTOPTION_H}") | |||||
endif () | |||||
set(FTOPTION_H_NAME "${PROJECT_BINARY_DIR}/include/freetype/config/ftoption.h") | |||||
if (EXISTS "${FTOPTION_H_NAME}") | |||||
file(READ "${FTOPTION_H_NAME}" ORIGINAL_FTOPTION_H) | |||||
else () | |||||
set(ORIGINAL_FTOPTION_H "") | |||||
endif () | |||||
if (NOT (ORIGINAL_FTOPTION_H STREQUAL FTOPTION_H)) | |||||
file(WRITE "${FTOPTION_H_NAME}" "${FTOPTION_H}") | |||||
endif () | |||||
file(GLOB PUBLIC_HEADERS "include/ft2build.h" "include/freetype/*.h") | |||||
file(GLOB PUBLIC_CONFIG_HEADERS "include/freetype/config/*.h") | |||||
file(GLOB PRIVATE_HEADERS "include/freetype/internal/*.h") | |||||
set(BASE_SRCS | |||||
src/autofit/autofit.c | |||||
src/base/ftbase.c | |||||
src/base/ftbbox.c | |||||
src/base/ftbdf.c | |||||
src/base/ftbitmap.c | |||||
src/base/ftcid.c | |||||
src/base/ftfstype.c | |||||
src/base/ftgasp.c | |||||
src/base/ftglyph.c | |||||
src/base/ftgxval.c | |||||
src/base/ftinit.c | |||||
src/base/ftmm.c | |||||
src/base/ftotval.c | |||||
src/base/ftpatent.c | |||||
src/base/ftpfr.c | |||||
src/base/ftstroke.c | |||||
src/base/ftsynth.c | |||||
src/base/fttype1.c | |||||
src/base/ftwinfnt.c | |||||
src/bdf/bdf.c | |||||
src/bzip2/ftbzip2.c | |||||
src/cache/ftcache.c | |||||
src/cff/cff.c | |||||
src/cid/type1cid.c | |||||
src/gzip/ftgzip.c | |||||
src/lzw/ftlzw.c | |||||
src/pcf/pcf.c | |||||
src/pfr/pfr.c | |||||
src/psaux/psaux.c | |||||
src/pshinter/pshinter.c | |||||
src/psnames/psnames.c | |||||
src/raster/raster.c | |||||
src/sdf/sdf.c | |||||
src/sfnt/sfnt.c | |||||
src/smooth/smooth.c | |||||
src/truetype/truetype.c | |||||
src/type1/type1.c | |||||
src/type42/type42.c | |||||
src/winfonts/winfnt.c | |||||
) | |||||
if (UNIX) | |||||
list(APPEND BASE_SRCS "builds/unix/ftsystem.c") | |||||
elseif (WIN32) | |||||
list(APPEND BASE_SRCS "builds/windows/ftsystem.c") | |||||
else () | |||||
list(APPEND BASE_SRCS "src/base/ftsystem.c") | |||||
endif () | |||||
if (WIN32) | |||||
enable_language(RC) | |||||
list(APPEND BASE_SRCS builds/windows/ftdebug.c | |||||
src/base/ftver.rc) | |||||
elseif (WINCE) | |||||
list(APPEND BASE_SRCS builds/wince/ftdebug.c) | |||||
else () | |||||
list(APPEND BASE_SRCS src/base/ftdebug.c) | |||||
endif () | |||||
if (BUILD_FRAMEWORK) | |||||
list(APPEND BASE_SRCS builds/mac/freetype-Info.plist) | |||||
endif () | |||||
if (NOT DISABLE_FORCE_DEBUG_POSTFIX) | |||||
set(CMAKE_DEBUG_POSTFIX d) | |||||
endif () | |||||
add_library(freetype | |||||
${PUBLIC_HEADERS} | |||||
${PUBLIC_CONFIG_HEADERS} | |||||
${PRIVATE_HEADERS} | |||||
${BASE_SRCS} | |||||
) | |||||
set_target_properties( | |||||
freetype PROPERTIES | |||||
C_VISIBILITY_PRESET hidden) | |||||
target_compile_definitions( | |||||
freetype PRIVATE FT2_BUILD_LIBRARY) | |||||
if (WIN32) | |||||
target_compile_definitions( | |||||
freetype PRIVATE _CRT_SECURE_NO_WARNINGS _CRT_NONSTDC_NO_WARNINGS) | |||||
if (BUILD_SHARED_LIBS) | |||||
target_compile_definitions( | |||||
freetype PRIVATE DLL_EXPORT) | |||||
endif () | |||||
endif () | |||||
if (BUILD_SHARED_LIBS) | |||||
set_target_properties(freetype PROPERTIES | |||||
VERSION ${LIBRARY_VERSION} | |||||
SOVERSION ${LIBRARY_SOVERSION}) | |||||
endif () | |||||
# Pick up ftconfig.h and ftoption.h generated above, first. | |||||
target_include_directories( | |||||
freetype | |||||
PUBLIC | |||||
$<INSTALL_INTERFACE:include/freetype2> | |||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include> | |||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> | |||||
PRIVATE | |||||
${CMAKE_CURRENT_BINARY_DIR}/include | |||||
${CMAKE_CURRENT_SOURCE_DIR}/include | |||||
# Make <ftconfig.h> available for builds/unix/ftsystem.c. | |||||
${CMAKE_CURRENT_BINARY_DIR}/include/freetype/config | |||||
) | |||||
if (BUILD_FRAMEWORK) | |||||
set_property(SOURCE ${PUBLIC_CONFIG_HEADERS} | |||||
PROPERTY MACOSX_PACKAGE_LOCATION Headers/config | |||||
) | |||||
set_target_properties(freetype PROPERTIES | |||||
FRAMEWORK TRUE | |||||
MACOSX_FRAMEWORK_INFO_PLIST builds/mac/freetype-Info.plist | |||||
PUBLIC_HEADER "${PUBLIC_HEADERS}" | |||||
XCODE_ATTRIBUTE_INSTALL_PATH "@rpath" | |||||
) | |||||
endif () | |||||
set(PKG_CONFIG_REQUIRED_PRIVATE "") | |||||
set(PKG_CONFIG_LIBS_PRIVATE "") | |||||
if (ZLIB_FOUND) | |||||
target_link_libraries(freetype PRIVATE ${ZLIB_LIBRARIES}) | |||||
target_include_directories(freetype PRIVATE ${ZLIB_INCLUDE_DIRS}) | |||||
list(APPEND PKG_CONFIG_REQUIRED_PRIVATE "zlib") | |||||
endif () | |||||
if (BZIP2_FOUND) | |||||
target_link_libraries(freetype PRIVATE ${BZIP2_LIBRARIES}) | |||||
target_include_directories(freetype PRIVATE ${BZIP2_INCLUDE_DIR}) # not BZIP2_INCLUDE_DIRS | |||||
list(APPEND PKG_CONFIG_LIBS_PRIVATE "-lbz2") | |||||
endif () | |||||
if (PNG_FOUND) | |||||
target_link_libraries(freetype PRIVATE ${PNG_LIBRARIES}) | |||||
target_compile_definitions(freetype PRIVATE ${PNG_DEFINITIONS}) | |||||
target_include_directories(freetype PRIVATE ${PNG_INCLUDE_DIRS}) | |||||
list(APPEND PKG_CONFIG_REQUIRED_PRIVATE "libpng") | |||||
endif () | |||||
if (HarfBuzz_FOUND) | |||||
target_link_libraries(freetype PRIVATE ${HarfBuzz_LIBRARY}) | |||||
target_include_directories(freetype PRIVATE ${HarfBuzz_INCLUDE_DIRS}) | |||||
list(APPEND PKG_CONFIG_REQUIRED_PRIVATE "harfbuzz >= ${HARFBUZZ_MIN_VERSION}") | |||||
endif () | |||||
if (BROTLIDEC_FOUND) | |||||
target_link_libraries(freetype PRIVATE ${BROTLIDEC_LIBRARIES}) | |||||
target_compile_definitions(freetype PRIVATE ${BROTLIDEC_DEFINITIONS}) | |||||
target_include_directories(freetype PRIVATE ${BROTLIDEC_INCLUDE_DIRS}) | |||||
list(APPEND PKG_CONFIG_REQUIRED_PRIVATE "libbrotlidec") | |||||
endif () | |||||
# Installation | |||||
include(GNUInstallDirs) | |||||
if (NOT SKIP_INSTALL_HEADERS AND NOT SKIP_INSTALL_ALL) | |||||
install( | |||||
# Note the trailing slash in the argument to `DIRECTORY'! | |||||
DIRECTORY ${PROJECT_SOURCE_DIR}/include/ | |||||
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/freetype2 | |||||
COMPONENT headers | |||||
PATTERN "internal" EXCLUDE | |||||
PATTERN "ftconfig.h" EXCLUDE | |||||
PATTERN "ftoption.h" EXCLUDE) | |||||
install( | |||||
FILES ${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h | |||||
${PROJECT_BINARY_DIR}/include/freetype/config/ftoption.h | |||||
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/freetype2/freetype/config | |||||
COMPONENT headers) | |||||
endif () | |||||
if (NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL) | |||||
# Generate the pkg-config file | |||||
file(READ "${PROJECT_SOURCE_DIR}/builds/unix/freetype2.in" FREETYPE2_PC_IN) | |||||
string(REPLACE ";" ", " PKG_CONFIG_REQUIRED_PRIVATE "${PKG_CONFIG_REQUIRED_PRIVATE}") | |||||
string(REPLACE "%prefix%" ${CMAKE_INSTALL_PREFIX} | |||||
FREETYPE2_PC_IN ${FREETYPE2_PC_IN}) | |||||
string(REPLACE "%exec_prefix%" "\${prefix}" | |||||
FREETYPE2_PC_IN ${FREETYPE2_PC_IN}) | |||||
string(REPLACE "%libdir%" "\${prefix}/${CMAKE_INSTALL_LIBDIR}" | |||||
FREETYPE2_PC_IN ${FREETYPE2_PC_IN}) | |||||
string(REPLACE "%includedir%" "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}" | |||||
FREETYPE2_PC_IN ${FREETYPE2_PC_IN}) | |||||
string(REPLACE "%ft_version%" "${LIBTOOL_CURRENT}.${LIBTOOL_REVISION}.${LIBTOOL_AGE}" | |||||
FREETYPE2_PC_IN ${FREETYPE2_PC_IN}) | |||||
string(REPLACE "%REQUIRES_PRIVATE%" "${PKG_CONFIG_REQUIRED_PRIVATE}" | |||||
FREETYPE2_PC_IN ${FREETYPE2_PC_IN}) | |||||
string(REPLACE "%LIBS_PRIVATE%" "${PKG_CONFIG_LIBS_PRIVATE}" | |||||
FREETYPE2_PC_IN ${FREETYPE2_PC_IN}) | |||||
set(FREETYPE2_PC_IN_NAME "${PROJECT_BINARY_DIR}/freetype2.pc") | |||||
if (EXISTS "${FREETYPE2_PC_IN_NAME}") | |||||
file(READ "${FREETYPE2_PC_IN_NAME}" ORIGINAL_FREETYPE2_PC_IN) | |||||
else () | |||||
set(ORIGINAL_FREETYPE2_PC_IN "") | |||||
endif () | |||||
if (NOT (ORIGINAL_FREETYPE2_PC_IN STREQUAL FREETYPE2_PC_IN)) | |||||
file(WRITE "${FREETYPE2_PC_IN_NAME}" ${FREETYPE2_PC_IN}) | |||||
endif () | |||||
install( | |||||
FILES ${PROJECT_BINARY_DIR}/freetype2.pc | |||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig | |||||
COMPONENT pkgconfig) | |||||
include(CMakePackageConfigHelpers) | |||||
write_basic_package_version_file( | |||||
${PROJECT_BINARY_DIR}/freetype-config-version.cmake | |||||
VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH} | |||||
COMPATIBILITY SameMajorVersion) | |||||
install( | |||||
TARGETS freetype | |||||
EXPORT freetype-targets | |||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} | |||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} | |||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} | |||||
FRAMEWORK DESTINATION Library/Frameworks | |||||
COMPONENT libraries) | |||||
install( | |||||
EXPORT freetype-targets | |||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/freetype | |||||
FILE freetype-config.cmake | |||||
COMPONENT headers) | |||||
install( | |||||
FILES ${PROJECT_BINARY_DIR}/freetype-config-version.cmake | |||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/freetype | |||||
COMPONENT headers) | |||||
endif () | |||||
# Packaging | |||||
set(CPACK_PACKAGE_NAME ${CMAKE_PROJECT_NAME}) | |||||
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "The FreeType font rendering library.") | |||||
set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README") | |||||
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.TXT") | |||||
set(CPACK_PACKAGE_VERSION_MAJOR ${VERSION_MAJOR}) | |||||
set(CPACK_PACKAGE_VERSION_MINOR ${VERSION_MINOR}) | |||||
set(CPACK_PACKAGE_VERSION_PATCH ${VERSION_PATCH}) | |||||
set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") | |||||
if (WIN32) | |||||
set(CPACK_GENERATOR ZIP) | |||||
else () | |||||
set(CPACK_GENERATOR TGZ) | |||||
endif () | |||||
set(CPACK_COMPONENT_LIBRARIES_DISPLAY_NAME "Libraries") | |||||
set(CPACK_COMPONENT_HEADERS_DISPLAY_NAME "C/C++ Headers") | |||||
set(CPACK_COMPONENT_LIBRARIES_DESCRIPTION | |||||
"Library used to build programs which use FreeType") | |||||
set(CPACK_COMPONENT_HEADERS_DESCRIPTION | |||||
"C/C++ header files for use with FreeType") | |||||
set(CPACK_COMPONENT_HEADERS_DEPENDS libraries) | |||||
set(CPACK_COMPONENT_LIBRARIES_GROUP "Development") | |||||
set(CPACK_COMPONENT_HEADERS_GROUP "Development") | |||||
include(CPack) |
@ -0,0 +1,42 @@ | |||||
FREETYPE LICENSES | |||||
----------------- | |||||
The FreeType 2 font engine is copyrighted work and cannot be used | |||||
legally without a software license. In order to make this project | |||||
usable to a vast majority of developers, we distribute it under two | |||||
mutually exclusive open-source licenses. | |||||
This means that *you* must choose *one* of the two licenses described | |||||
below, then obey all its terms and conditions when using FreeType 2 in | |||||
any of your projects or products. | |||||
- The FreeType License, found in the file `docs/FTL.TXT`, which is | |||||
similar to the original BSD license *with* an advertising clause | |||||
that forces you to explicitly cite the FreeType project in your | |||||
product's documentation. All details are in the license file. | |||||
This license is suited to products which don't use the GNU General | |||||
Public License. | |||||
Note that this license is compatible to the GNU General Public | |||||
License version 3, but not version 2. | |||||
- The GNU General Public License version 2, found in | |||||
`docs/GPLv2.TXT` (any later version can be used also), for | |||||
programs which already use the GPL. Note that the FTL is | |||||
incompatible with GPLv2 due to its advertisement clause. | |||||
The contributed BDF and PCF drivers come with a license similar to | |||||
that of the X Window System. It is compatible to the above two | |||||
licenses (see files `src/bdf/README` and `src/pcf/README`). The same | |||||
holds for the source code files `src/base/fthash.c` and | |||||
`include/freetype/internal/fthash.h`; they wer part of the BDF driver | |||||
in earlier FreeType versions. | |||||
The gzip module uses the zlib license (see `src/gzip/zlib.h`) which | |||||
too is compatible to the above two licenses. | |||||
The MD5 checksum support (only used for debugging in development | |||||
builds) is in the public domain. | |||||
--- end of LICENSE.TXT --- |
@ -0,0 +1,34 @@ | |||||
# | |||||
# FreeType 2 build system -- top-level Makefile | |||||
# | |||||
# Copyright (C) 1996-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
# Project names | |||||
# | |||||
PROJECT := freetype | |||||
PROJECT_TITLE := FreeType | |||||
# The variable TOP_DIR holds the path to the topmost directory in the project | |||||
# engine source hierarchy. If it is not defined, default it to `.'. | |||||
# | |||||
TOP_DIR ?= . | |||||
# The variable OBJ_DIR gives the location where object files and the | |||||
# FreeType library are built. | |||||
# | |||||
OBJ_DIR ?= $(TOP_DIR)/objs | |||||
include $(TOP_DIR)/builds/toplevel.mk | |||||
# EOF |
@ -0,0 +1,106 @@ | |||||
FreeType 2.11.0 | |||||
=============== | |||||
Homepage: https://www.freetype.org | |||||
FreeType is a freely available software library to render fonts. | |||||
It is written in C, designed to be small, efficient, highly | |||||
customizable, and portable while capable of producing high-quality | |||||
output (glyph images) of most vector and bitmap font formats. | |||||
Please read the `docs/CHANGES` file, it contains IMPORTANT | |||||
INFORMATION. | |||||
Read the files `docs/INSTALL*` for installation instructions; see the | |||||
file `docs/LICENSE.TXT` for the available licenses. | |||||
For using FreeType's git repository instead of a distribution bundle, | |||||
please read file `README.git`. | |||||
The FreeType 2 API reference is located in directory `docs/reference`; | |||||
use the file `index.html` as the top entry point. [Please note that | |||||
currently the search function for locally installed documentation | |||||
doesn't work due to cross-site scripting issues.] | |||||
Additional documentation is available as a separate package from our | |||||
sites. Go to | |||||
https://download.savannah.gnu.org/releases/freetype/ | |||||
and download one of the following files. | |||||
freetype-doc-2.11.0.tar.xz | |||||
freetype-doc-2.11.0.tar.gz | |||||
ftdoc2110.zip | |||||
To view the documentation online, go to | |||||
https://www.freetype.org/freetype2/docs/ | |||||
Mailing Lists | |||||
------------- | |||||
The preferred way of communication with the FreeType team is using | |||||
e-mail lists. | |||||
general use and discussion: freetype@nongnu.org | |||||
engine internals, porting, etc.: freetype-devel@nongnu.org | |||||
announcements: freetype-announce@nongnu.org | |||||
git repository tracker: freetype-commit@nongnu.org | |||||
The lists are moderated; see | |||||
https://www.freetype.org/contact.html | |||||
how to subscribe. | |||||
Bugs | |||||
---- | |||||
Please submit bug reports at | |||||
https://gitlab.freedesktop.org/freetype/freetype/-/issues | |||||
Alternatively, you might report bugs by e-mail to | |||||
`freetype-devel@nongnu.org`. Don't forget to send a detailed | |||||
explanation of the problem -- there is nothing worse than receiving a | |||||
terse message that only says 'it doesn't work'. | |||||
Patches | |||||
------- | |||||
For larger changes please provide merge requests at | |||||
https://gitlab.freedesktop.org/freetype/freetype/-/merge_requests | |||||
Alternatively, you can send patches to the `freetype-devel@nongnu.org` | |||||
mailing list -- and thank you in advance for your work on improving | |||||
FreeType! | |||||
Details on the process can be found here: | |||||
https://www.freetype.org/developer.html#patches | |||||
Enjoy! | |||||
The FreeType Team | |||||
---------------------------------------------------------------------- | |||||
Copyright (C) 2006-2021 by | |||||
David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
This file is part of the FreeType project, and may only be used, | |||||
modified, and distributed under the terms of the FreeType project | |||||
license, LICENSE.TXT. By continuing to use, modify, or distribute | |||||
this file you indicate that you have read the license and understand | |||||
and accept it fully. | |||||
--- end of README --- |
@ -0,0 +1,107 @@ | |||||
README.git | |||||
========== | |||||
repository issues | |||||
----------------- | |||||
FreeType's official repository site is | |||||
https://gitlab.freedesktop.org/freetype , | |||||
from which the 'freetype.git' and 'freetype-demos.git' repositories | |||||
can be cloned in the usual way. | |||||
git clone https://gitlab.freedesktop.org/freetype/freetype.git | |||||
git clone https://gitlab.freedesktop.org/freetype/freetype-demos.git | |||||
If you want to use the Savannah mirror instead, you have to do a | |||||
slightly different incantation because the repository names contain | |||||
digit '2' for historical reasons. | |||||
git clone \ | |||||
https://git.savannah.nongnu.org/git/freetype/freetype2.git \ | |||||
freetype | |||||
git clone \ | |||||
https://git.savannah.nongnu.org/git/freetype/freetype2-demos.git \ | |||||
freetype-demos | |||||
standard builds with `configure` | |||||
-------------------------------- | |||||
The git repository doesn't contain pre-built configuration scripts for | |||||
UNIXish platforms. To generate them say | |||||
sh autogen.sh | |||||
which in turn depends on the following packages: | |||||
automake (1.10.1) | |||||
libtool (2.2.4) | |||||
autoconf (2.62) | |||||
The versions given in parentheses are known to work. Newer versions | |||||
should work too, of course. Note that `autogen.sh` also sets up | |||||
proper file permissions for the `configure` and auxiliary scripts. | |||||
The `autogen.sh` script checks whether the versions of the above three | |||||
tools match the numbers above. Otherwise it will complain and suggest | |||||
either upgrading or using environment variables to point to more | |||||
recent versions of the required tools. | |||||
Note that `aclocal` is provided by the 'automake' package on Linux, | |||||
and that `libtoolize` is called `glibtoolize` on Darwin (OS X). | |||||
alternative build methods | |||||
------------------------- | |||||
For static builds that don't use platform-specific optimizations, no | |||||
configure script is necessary at all; saying | |||||
make setup ansi | |||||
make | |||||
should work on all platforms that have GNU `make` (or `makepp`). | |||||
A build with `cmake` or `meson` can be done directly from the git | |||||
repository. However, if you want to use the `FT_DEBUG_LOGGING` macro | |||||
(see file `docs/DEBUG` for more information) it is currently mandatory | |||||
to execute `autogen.sh` in advance; this script clones the 'dlg' git | |||||
submodule and copies some files into FreeType's source tree. | |||||
contributing | |||||
------------ | |||||
If you want to contribute to FreeType it is recommended to install the | |||||
`git-merge-changelog` program – we use a `ChangeLog` file, which often | |||||
prevents simple merging due to conflicts. Most GNU/Linux | |||||
distributions have a package for this program; otherwise you can | |||||
install it via the 'gnulib' git repository. Detailed instructions can | |||||
be found at the beginning of | |||||
https://git.savannah.gnu.org/cgit/gnulib.git/tree/lib/git-merge-changelog.c | |||||
To make it actually work, add to file `.git/config` in the FreeType | |||||
git repository (or to your `$HOME/.gitconfig` file) the lines | |||||
[merge "merge-changelog"] | |||||
name = GNU-style ChangeLog merge driver | |||||
driver = /usr/local/bin/git-merge-changelog %O %A %B | |||||
---------------------------------------------------------------------- | |||||
Copyright (C) 2005-2021 by | |||||
David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
This file is part of the FreeType project, and may only be used, | |||||
modified, and distributed under the terms of the FreeType project | |||||
license, LICENSE.TXT. By continuing to use, modify, or distribute | |||||
this file you indicate that you have read the license and understand | |||||
and accept it fully. | |||||
--- end of README.git --- |
@ -0,0 +1,193 @@ | |||||
#!/bin/sh | |||||
# Copyright (C) 2005-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
run () | |||||
{ | |||||
echo "running \`$*'" | |||||
eval $* | |||||
if test $? != 0 ; then | |||||
echo "error while running \`$*'" | |||||
exit 1 | |||||
fi | |||||
} | |||||
get_major_version () | |||||
{ | |||||
echo $1 | sed -e 's/\([0-9][0-9]*\)\..*/\1/g' | |||||
} | |||||
get_minor_version () | |||||
{ | |||||
echo $1 | sed -e 's/[0-9][0-9]*\.\([0-9][0-9]*\).*/\1/g' | |||||
} | |||||
get_patch_version () | |||||
{ | |||||
# tricky: some version numbers don't include a patch | |||||
# separated with a point, but something like 1.4-p6 | |||||
patch=`echo $1 | sed -e 's/[0-9][0-9]*\.[0-9][0-9]*\.\([0-9][0-9]*\).*/\1/g'` | |||||
if test "$patch" = "$1"; then | |||||
patch=`echo $1 | sed -e 's/[0-9][0-9]*\.[0-9][0-9]*\-p\([0-9][0-9]*\).*/\1/g'` | |||||
# if there isn't any patch number, default to 0 | |||||
if test "$patch" = "$1"; then | |||||
patch=0 | |||||
fi | |||||
fi | |||||
echo $patch | |||||
} | |||||
# $1: version to check | |||||
# $2: minimum version | |||||
compare_to_minimum_version () | |||||
{ | |||||
MAJOR1=`get_major_version $1` | |||||
MAJOR2=`get_major_version $2` | |||||
if test $MAJOR1 -lt $MAJOR2; then | |||||
echo 0 | |||||
return | |||||
else | |||||
if test $MAJOR1 -gt $MAJOR2; then | |||||
echo 1 | |||||
return | |||||
fi | |||||
fi | |||||
MINOR1=`get_minor_version $1` | |||||
MINOR2=`get_minor_version $2` | |||||
if test $MINOR1 -lt $MINOR2; then | |||||
echo 0 | |||||
return | |||||
else | |||||
if test $MINOR1 -gt $MINOR2; then | |||||
echo 1 | |||||
return | |||||
fi | |||||
fi | |||||
PATCH1=`get_patch_version $1` | |||||
PATCH2=`get_patch_version $2` | |||||
if test $PATCH1 -lt $PATCH2; then | |||||
echo 0 | |||||
else | |||||
echo 1 | |||||
fi | |||||
} | |||||
# check the version of a given tool against a minimum version number | |||||
# | |||||
# $1: tool path | |||||
# $2: tool usual name (e.g. `aclocal') | |||||
# $3: tool variable (e.g. `ACLOCAL') | |||||
# $4: minimum version to check against | |||||
# $5: option field index used to extract the tool version from the | |||||
# output of --version | |||||
check_tool_version () | |||||
{ | |||||
field=$5 | |||||
# assume the output of "[TOOL] --version" is "toolname (GNU toolname foo bar) version" | |||||
if test "$field"x = x; then | |||||
field=3 # default to 3 for all GNU autotools, after filtering enclosed string | |||||
fi | |||||
version=`$1 --version | head -1 | sed 's/([^)]*)/()/g' | cut -d ' ' -f $field` | |||||
version_check=`compare_to_minimum_version $version $4` | |||||
if test "$version_check"x = 0x; then | |||||
echo "ERROR: Your version of the \`$2' tool is too old." | |||||
echo " Minimum version $4 is required (yours is version $version)." | |||||
echo " Please upgrade or use the $3 variable to point to a more recent one." | |||||
echo "" | |||||
exit 1 | |||||
fi | |||||
} | |||||
if test ! -f ./builds/unix/configure.raw; then | |||||
echo "You must be in the same directory as \`autogen.sh'." | |||||
echo "Bootstrapping doesn't work if srcdir != builddir." | |||||
exit 1 | |||||
fi | |||||
# On MacOS X, the GNU libtool is named `glibtool'. | |||||
HOSTOS=`uname` | |||||
if test "$LIBTOOLIZE"x != x; then | |||||
: | |||||
elif test "$HOSTOS"x = Darwinx; then | |||||
LIBTOOLIZE=glibtoolize | |||||
else | |||||
LIBTOOLIZE=libtoolize | |||||
fi | |||||
if test "$ACLOCAL"x = x; then | |||||
ACLOCAL=aclocal | |||||
fi | |||||
if test "$AUTOCONF"x = x; then | |||||
AUTOCONF=autoconf | |||||
fi | |||||
check_tool_version $ACLOCAL aclocal ACLOCAL 1.10.1 | |||||
check_tool_version $LIBTOOLIZE libtoolize LIBTOOLIZE 2.2.4 | |||||
check_tool_version $AUTOCONF autoconf AUTOCONF 2.62 | |||||
# This sets FREETYPE version. | |||||
eval `sed -n \ | |||||
-e 's/^#define *\(FREETYPE_MAJOR\) *\([0-9][0-9]*\).*/\1=\2/p' \ | |||||
-e 's/^#define *\(FREETYPE_MINOR\) *\([0-9][0-9]*\).*/\1=\2/p' \ | |||||
-e 's/^#define *\(FREETYPE_PATCH\) *\([0-9][0-9]*\).*/\1=\2/p' \ | |||||
include/freetype/freetype.h` | |||||
if test "$FREETYPE_PATCH" = "0"; then | |||||
FREETYPE=$FREETYPE_MAJOR.$FREETYPE_MINOR | |||||
else | |||||
FREETYPE=$FREETYPE_MAJOR.$FREETYPE_MINOR.$FREETYPE_PATCH | |||||
fi | |||||
echo "FreeType $FREETYPE:" | |||||
cd builds/unix | |||||
echo "generating \`configure.ac'" | |||||
sed -e "s;@VERSION@;$FREETYPE;" \ | |||||
< configure.raw > configure.ac | |||||
run aclocal -I . --force | |||||
run $LIBTOOLIZE --force --copy --install | |||||
run autoconf --force | |||||
chmod +x install-sh | |||||
cd ../.. | |||||
chmod +x ./configure | |||||
# Copy all necessary 'dlg' files. | |||||
copy_submodule_files () | |||||
{ | |||||
echo "Copying files from \`subprojects/dlg' to \`src/dlg' and \`include/dlg'" | |||||
mkdir include/dlg 2> /dev/null | |||||
cp $DLG_INC_DIR/output.h include/dlg | |||||
cp $DLG_INC_DIR/dlg.h include/dlg | |||||
cp $DLG_SRC_DIR/* src/dlg | |||||
} | |||||
DLG_INC_DIR=subprojects/dlg/include/dlg | |||||
DLG_SRC_DIR=subprojects/dlg/src/dlg | |||||
if ! test -d "$DLG_INC_DIR"; then | |||||
echo "Checking out submodule in \`subprojects/dlg':" | |||||
git submodule init | |||||
git submodule update | |||||
fi | |||||
copy_submodule_files | |||||
# EOF |
@ -0,0 +1,110 @@ | |||||
README for the builds/amiga subdirectory. | |||||
Copyright (C) 2005-2021 by | |||||
Werner Lemberg and Detlef Würkner. | |||||
This file is part of the FreeType project, and may only be used, modified, | |||||
and distributed under the terms of the FreeType project license, | |||||
LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
indicate that you have read the license and understand and accept it | |||||
fully. | |||||
The makefile.os4 is for the AmigaOS4 SDK. To use it, type | |||||
"make -f makefile.os4", it produces a link library libft2_ppc.a. | |||||
The makefile is for ppc-morphos-gcc-2.95.3-bin.tgz (gcc 2.95.3 hosted on | |||||
68k-Amiga producing MorphOS-PPC-binaries from http://www.morphos.de). | |||||
To use it, type "make assign", then "make"; it produces a link library | |||||
libft2_ppc.a. | |||||
The smakefile is a makefile for Amiga SAS/C 6.58 (no longer available, | |||||
latest sold version was 6.50, updates can be found in Aminet). It is | |||||
based on the version found in the sourcecode of ttf.library 0.83b for | |||||
FreeType 1.3.1 from Richard Griffith (ragriffi@sprynet.com, | |||||
http://ragriffi.home.sprynet.com). | |||||
You will also need the latest include files and amiga.lib from the | |||||
Amiga web site (https://os.amigaworld.de/download.php?id=3) for | |||||
AmigaOS 3.9; the generated code should work under AmigaOS 2.04 and up. | |||||
To use it, call "smake assign" and then "smake" from the builds/amiga | |||||
directory. The results are: | |||||
- A link library "ft2_680x0.lib" (where x depends on the setting of | |||||
the CPU entry in the smakefile) containing all FreeType2 parts | |||||
except of the init code, debugging code, and the system interface | |||||
code. | |||||
- ftsystem.o, an object module containing the standard version of the | |||||
system interface code which uses fopen() fclose() fread() fseek() | |||||
ftell() malloc() realloc() and free() from lib:sc.lib (not pure). | |||||
- ftsystempure.o, an object module containing the pure version of the | |||||
system interface code which uses Open() Close() Read() Seek() | |||||
ExamineFH() AsmAllocPooled() AsmFreePooled() etc. This version can | |||||
be used in both normal programs and in Amiga run-time shared system | |||||
librarys (can be linked with lib:libinit.o, no copying of DATA and | |||||
BSS hunks for each OpenLibrary() necessary). Source code is in | |||||
src/base/ftsystem.c. | |||||
- ftdebug.o, an object module containing the standard version of the | |||||
debugging code which uses vprintf() and exit() (not pure). | |||||
Debugging can be turned on in FT:include/freetype/config/ftoption.h | |||||
and with FT_SetTraceLevel(). | |||||
- ftdebugpure.o, an object module containing the pure version of the | |||||
debugging code which uses KVPrintf() from lib:debug.lib and no | |||||
exit(). For debugging of Amiga run-time shared system libraries. | |||||
Source code is in src/base/ftdebug.c. | |||||
- NO ftinit.o. Because linking with a link library should result in | |||||
linking only the needed object modules in it, but standard | |||||
ftsystem.o would force ALL FreeType2 modules to be linked to your | |||||
program, I decided to use a different scheme: You must #include | |||||
FT:src/base/ftinit.c in your sourcecode and specify with #define | |||||
statements which modules you need. See | |||||
include/freetype/config/ftmodule.h. | |||||
To use in your own programs: | |||||
- Insert the #define and #include statements from top of | |||||
include/freetype/config/ftmodule.h in your source code and | |||||
uncomment the #define statements for the FreeType2 modules you need. | |||||
- You can use either PARAMETERS=REGISTER or PARAMETERS=STACK for | |||||
calling the FreeType2 functions, because the link library and the | |||||
object files are compiled with PARAMETERS=BOTH. | |||||
- "smake assign" (assign "FT:" to the FreeType2 main directory). | |||||
- Compile your program. | |||||
- Link with either ftsystem.o or ftsystempure.o, if debugging enabled | |||||
with either ftdebug.o or (ftdebugpure.o and lib:debug.lib), and with | |||||
ft2_680x0.lib as link library. | |||||
To adapt to other compilers: | |||||
- The standard ANSI C maximum length of 31 significant characters in | |||||
identifiers is not enough for FreeType2. Check if your compiler has | |||||
a minimum length of 40 significant characters or can be switched to | |||||
it. "idlen=40" is the option for SAS/C. Setting #define | |||||
HAVE_LIMIT_ON_IDENTS in an include file may also work (not tested). | |||||
- Make sure that the include directory in builds/amiga is searched | |||||
before the normal FreeType2 include directory, so you are able to | |||||
replace problematic include files with your own version (same may be | |||||
useful for the src directory). | |||||
- An example of how to replace/workaround a problematic include file | |||||
is include/freetype/config/ftconfig.h; it changes a #define that | |||||
would prevent SAS/C from generating XDEF's where it should do that and | |||||
then includes the standard FreeType2 include file. | |||||
Local Variables: | |||||
coding: latin-1 | |||||
End: |
@ -0,0 +1,55 @@ | |||||
/***************************************************************************/ | |||||
/* */ | |||||
/* ftconfig.h */ | |||||
/* */ | |||||
/* Amiga-specific configuration file (specification only). */ | |||||
/* */ | |||||
/* Copyright (C) 2005-2021 by */ | |||||
/* Werner Lemberg and Detlef Würkner. */ | |||||
/* */ | |||||
/* This file is part of the FreeType project, and may only be used, */ | |||||
/* modified, and distributed under the terms of the FreeType project */ | |||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ | |||||
/* this file you indicate that you have read the license and */ | |||||
/* understand and accept it fully. */ | |||||
/* */ | |||||
/***************************************************************************/ | |||||
/* | |||||
* This is an example how to override the default FreeType2 header files | |||||
* with Amiga-specific changes. When the compiler searches this directory | |||||
* before the default directory, we can do some modifications. | |||||
* | |||||
* Here we must change FT_EXPORT_DEF so that SAS/C does | |||||
* generate the needed XDEFs. | |||||
*/ | |||||
#if 0 | |||||
#define FT_EXPORT_DEF( x ) extern x | |||||
#endif | |||||
#undef FT_EXPORT_DEF | |||||
#define FT_EXPORT_DEF( x ) x | |||||
/* Now include the original file */ | |||||
#ifndef __MORPHOS__ | |||||
#ifdef __SASC | |||||
#include "FT:include/freetype/config/ftconfig.h" | |||||
#else | |||||
#include "/FT/include/freetype/config/ftconfig.h" | |||||
#endif | |||||
#else | |||||
/* We must define that, it seems that | |||||
* lib/gcc-lib/ppc-morphos/2.95.3/include/syslimits.h is missing in | |||||
* ppc-morphos-gcc-2.95.3-bin.tgz (gcc for 68k producing MorphOS PPC elf | |||||
* binaries from http://www.morphos.de) | |||||
*/ | |||||
#define _LIBC_LIMITS_H_ | |||||
#include "/FT/include/freetype/config/ftconfig.h" | |||||
#endif | |||||
/* | |||||
Local Variables: | |||||
coding: latin-1 | |||||
End: | |||||
*/ |
@ -0,0 +1,158 @@ | |||||
/***************************************************************************/ | |||||
/* */ | |||||
/* ftmodule.h */ | |||||
/* */ | |||||
/* Amiga-specific FreeType module selection. */ | |||||
/* */ | |||||
/* Copyright (C) 2005-2021 by */ | |||||
/* Werner Lemberg and Detlef Würkner. */ | |||||
/* */ | |||||
/* This file is part of the FreeType project, and may only be used, */ | |||||
/* modified, and distributed under the terms of the FreeType project */ | |||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ | |||||
/* this file you indicate that you have read the license and */ | |||||
/* understand and accept it fully. */ | |||||
/* */ | |||||
/***************************************************************************/ | |||||
/* | |||||
* To avoid that all your programs include all FreeType modules, | |||||
* you copy the following piece of source code into your own | |||||
* source file and specify which modules you really need in your | |||||
* application by uncommenting the appropriate lines. | |||||
*/ | |||||
/* | |||||
//#define FT_USE_AUTOFIT // autofitter | |||||
//#define FT_USE_RASTER // monochrome rasterizer | |||||
//#define FT_USE_SMOOTH // anti-aliasing rasterizer | |||||
//#define FT_USE_TT // truetype font driver | |||||
//#define FT_USE_T1 // type1 font driver | |||||
//#define FT_USE_T42 // type42 font driver | |||||
//#define FT_USE_T1CID // cid-keyed type1 font driver // no cmap support | |||||
//#define FT_USE_CFF // opentype font driver | |||||
//#define FT_USE_BDF // bdf bitmap font driver | |||||
//#define FT_USE_PCF // pcf bitmap font driver | |||||
//#define FT_USE_PFR // pfr font driver | |||||
//#define FT_USE_WINFNT // windows .fnt|.fon bitmap font driver | |||||
//#define FT_USE_OTV // opentype validator | |||||
//#define FT_USE_GXV // truetype gx validator | |||||
#include "FT:src/base/ftinit.c" | |||||
*/ | |||||
/* Make sure that the needed support modules are built in. | |||||
* Dependencies can be found by searching for FT_Get_Module. | |||||
*/ | |||||
#ifdef FT_USE_T42 | |||||
#define FT_USE_TT | |||||
#endif | |||||
#ifdef FT_USE_TT | |||||
#define FT_USE_SFNT | |||||
#endif | |||||
#ifdef FT_USE_CFF | |||||
#define FT_USE_SFNT | |||||
#define FT_USE_PSHINT | |||||
#define FT_USE_PSNAMES | |||||
#endif | |||||
#ifdef FT_USE_T1 | |||||
#define FT_USE_PSAUX | |||||
#define FT_USE_PSHINT | |||||
#define FT_USE_PSNAMES | |||||
#endif | |||||
#ifdef FT_USE_T1CID | |||||
#define FT_USE_PSAUX | |||||
#define FT_USE_PSHINT | |||||
#define FT_USE_PSNAMES | |||||
#endif | |||||
#ifdef FT_USE_PSAUX | |||||
#define FT_USE_PSNAMES | |||||
#endif | |||||
#ifdef FT_USE_SFNT | |||||
#define FT_USE_PSNAMES | |||||
#endif | |||||
/* Now include the modules */ | |||||
#ifdef FT_USE_AUTOFIT | |||||
FT_USE_MODULE( FT_Module_Class, autofit_module_class ) | |||||
#endif | |||||
#ifdef FT_USE_TT | |||||
FT_USE_MODULE( FT_Driver_ClassRec, tt_driver_class ) | |||||
#endif | |||||
#ifdef FT_USE_T1 | |||||
FT_USE_MODULE( FT_Driver_ClassRec, t1_driver_class ) | |||||
#endif | |||||
#ifdef FT_USE_CFF | |||||
FT_USE_MODULE( FT_Driver_ClassRec, cff_driver_class ) | |||||
#endif | |||||
#ifdef FT_USE_T1CID | |||||
FT_USE_MODULE( FT_Driver_ClassRec, t1cid_driver_class ) | |||||
#endif | |||||
#ifdef FT_USE_PFR | |||||
FT_USE_MODULE( FT_Driver_ClassRec, pfr_driver_class ) | |||||
#endif | |||||
#ifdef FT_USE_T42 | |||||
FT_USE_MODULE( FT_Driver_ClassRec, t42_driver_class ) | |||||
#endif | |||||
#ifdef FT_USE_WINFNT | |||||
FT_USE_MODULE( FT_Driver_ClassRec, winfnt_driver_class ) | |||||
#endif | |||||
#ifdef FT_USE_PCF | |||||
FT_USE_MODULE( FT_Driver_ClassRec, pcf_driver_class ) | |||||
#endif | |||||
#ifdef FT_USE_PSAUX | |||||
FT_USE_MODULE( FT_Module_Class, psaux_module_class ) | |||||
#endif | |||||
#ifdef FT_USE_PSNAMES | |||||
FT_USE_MODULE( FT_Module_Class, psnames_module_class ) | |||||
#endif | |||||
#ifdef FT_USE_PSHINT | |||||
FT_USE_MODULE( FT_Module_Class, pshinter_module_class ) | |||||
#endif | |||||
#ifdef FT_USE_RASTER | |||||
FT_USE_MODULE( FT_Renderer_Class, ft_raster1_renderer_class ) | |||||
#endif | |||||
#ifdef FT_USE_SFNT | |||||
FT_USE_MODULE( FT_Module_Class, sfnt_module_class ) | |||||
#endif | |||||
#ifdef FT_USE_SMOOTH | |||||
FT_USE_MODULE( FT_Renderer_Class, ft_smooth_renderer_class ) | |||||
#endif | |||||
#ifdef FT_USE_OTV | |||||
FT_USE_MODULE( FT_Module_Class, otv_module_class ) | |||||
#endif | |||||
#ifdef FT_USE_BDF | |||||
FT_USE_MODULE( FT_Driver_ClassRec, bdf_driver_class ) | |||||
#endif | |||||
#ifdef FT_USE_GXV | |||||
FT_USE_MODULE( FT_Module_Class, gxv_module_class ) | |||||
#endif | |||||
/* | |||||
Local Variables: | |||||
coding: latin-1 | |||||
End: | |||||
*/ |
@ -0,0 +1,293 @@ | |||||
# | |||||
# Makefile for FreeType2 link library using ppc-morphos-gcc-2.95.3-bin.tgz | |||||
# (gcc 2.95.3 hosted on 68k-Amiga producing MorphOS-PPC-binaries from | |||||
# http://www.morphos.de) | |||||
# | |||||
# Copyright (C) 2005-2021 by | |||||
# Werner Lemberg and Detlef Würkner. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
# | |||||
# to build from the builds/amiga directory call | |||||
# | |||||
# make assign | |||||
# make | |||||
# | |||||
# Your programs source code should start with this | |||||
# (uncomment the parts you do not need to keep the program small): | |||||
# ---8<--- | |||||
#define FT_USE_AUTOFIT // autofitter | |||||
#define FT_USE_RASTER // monochrome rasterizer | |||||
#define FT_USE_SMOOTH // anti-aliasing rasterizer | |||||
#define FT_USE_TT // truetype font driver | |||||
#define FT_USE_T1 // type1 font driver | |||||
#define FT_USE_T42 // type42 font driver | |||||
#define FT_USE_T1CID // cid-keyed type1 font driver | |||||
#define FT_USE_CFF // opentype font driver | |||||
#define FT_USE_BDF // bdf bitmap font driver | |||||
#define FT_USE_PCF // pcf bitmap font driver | |||||
#define FT_USE_PFR // pfr font driver | |||||
#define FT_USE_WINFNT // windows .fnt|.fon bitmap font driver | |||||
#define FT_USE_OTV // opentype validator | |||||
#define FT_USE_GXV // truetype gx validator | |||||
#include "FT:src/base/ftinit.c" | |||||
# ---8<--- | |||||
# | |||||
# link your programs with libft2_ppc.a and either ftsystem.ppc.o or ftsystempure.ppc.o | |||||
# (and either ftdebug.ppc.o or ftdebugpure.ppc.o if you enabled FT_DEBUG_LEVEL_ERROR or | |||||
# FT_DEBUG_LEVEL_TRACE in include/freetype/config/ftoption.h). | |||||
all: libft2_ppc.a ftsystem.ppc.o ftsystempure.ppc.o | |||||
assign: | |||||
assign FT: // | |||||
FTSRC = /FT/src | |||||
CC = ppc-morphos-gcc | |||||
AR = ppc-morphos-ar rc | |||||
RANLIB = ppc-morphos-ranlib | |||||
LD = ppc-morphos-ld | |||||
CFLAGS = -DFT2_BUILD_LIBRARY -O2 -I/emu/emulinclude/includegcc -I/emu/include -Iinclude -I$(FTSRC) -I/FT/include | |||||
# | |||||
# FreeType2 library base | |||||
# | |||||
ftbase.ppc.o: $(FTSRC)/base/ftbase.c | |||||
$(CC) -c $(CFLAGS) -o $@ $< | |||||
ftinit.ppc.o: $(FTSRC)/base/ftinit.c | |||||
$(CC) -c $(CFLAGS) -o $@ $< | |||||
ftsystem.ppc.o: $(FTSRC)/base/ftsystem.c | |||||
$(CC) -c $(CFLAGS) -o $@ $< | |||||
# pure version for use in run-time library etc | |||||
ftsystempure.ppc.o: src/base/ftsystem.c | |||||
$(CC) -c $(CFLAGS) -o $@ $< | |||||
ftdebug.ppc.o: $(FTSRC)/base/ftdebug.c | |||||
$(CC) -c $(CFLAGS) -o $@ $< | |||||
# pure version for use in run-time library etc | |||||
ftdebugpure.ppc.o: src/base/ftdebug.c | |||||
$(CC) -c $(CFLAGS) -o $@ $< | |||||
# | |||||
# FreeType2 library base extensions | |||||
# | |||||
ftbbox.ppc.o: $(FTSRC)/base/ftbbox.c | |||||
$(CC) -c $(CFLAGS) -o $@ $< | |||||
ftbdf.ppc.o: $(FTSRC)/base/ftbdf.c | |||||
$(CC) -c $(CFLAGS) -o $@ $< | |||||
ftbitmap.ppc.o: $(FTSRC)/base/ftbitmap.c | |||||
$(CC) -c $(CFLAGS) -o $@ $< | |||||
ftcid.ppc.o: $(FTSRC)/base/ftcid.c | |||||
$(CC) -c $(CFLAGS) -o $@ $< | |||||
ftfstype.ppc.o: $(FTSRC)/base/ftfstype.c | |||||
$(CC) -c $(CFLAGS) -o $@ $< | |||||
ftgasp.ppc.o: $(FTSRC)/base/ftgasp.c | |||||
$(CC) -c $(CFLAGS) -o $@ $< | |||||
ftglyph.ppc.o: $(FTSRC)/base/ftglyph.c | |||||
$(CC) -c $(CFLAGS) -o $@ $< | |||||
ftgxval.ppc.o: $(FTSRC)/base/ftgxval.c | |||||
$(CC) -c $(CFLAGS) -o $@ $< | |||||
ftmm.ppc.o: $(FTSRC)/base/ftmm.c | |||||
$(CC) -c $(CFLAGS) -o $@ $< | |||||
ftotval.ppc.o: $(FTSRC)/base/ftotval.c | |||||
$(CC) -c $(CFLAGS) -o $@ $< | |||||
ftpatent.ppc.o: $(FTSRC)/base/ftpatent.c | |||||
$(CC) -c $(CFLAGS) -o $@ $< | |||||
ftpfr.ppc.o: $(FTSRC)/base/ftpfr.c | |||||
$(CC) -c $(CFLAGS) -o $@ $< | |||||
ftstroke.ppc.o: $(FTSRC)/base/ftstroke.c | |||||
$(CC) -c $(CFLAGS) -o $@ $< | |||||
ftsynth.ppc.o: $(FTSRC)/base/ftsynth.c | |||||
$(CC) -c $(CFLAGS) -o $@ $< | |||||
fttype1.ppc.o: $(FTSRC)/base/fttype1.c | |||||
$(CC) -c $(CFLAGS) -o $@ $< | |||||
ftwinfnt.ppc.o: $(FTSRC)/base/ftwinfnt.c | |||||
$(CC) -c $(CFLAGS) -o $@ $< | |||||
# | |||||
# FreeType2 library autofitting module | |||||
# | |||||
autofit.ppc.o: $(FTSRC)/autofit/autofit.c | |||||
$(CC) -c $(CFLAGS) -o $@ $< | |||||
# | |||||
# FreeType2 library postscript hinting module | |||||
# | |||||
pshinter.ppc.o: $(FTSRC)/pshinter/pshinter.c | |||||
$(CC) -c $(CFLAGS) -o $@ $< | |||||
# | |||||
# FreeType2 library PS support module | |||||
# | |||||
psaux.ppc.o: $(FTSRC)/psaux/psaux.c | |||||
$(CC) -c $(CFLAGS) -o $@ $< | |||||
# | |||||
# FreeType2 library PS glyph names module | |||||
# | |||||
psnames.ppc.o: $(FTSRC)/psnames/psnames.c | |||||
$(CC) -c $(CFLAGS) -o $@ $< | |||||
# | |||||
# FreeType2 library monochrome raster module | |||||
# | |||||
raster.ppc.o: $(FTSRC)/raster/raster.c | |||||
$(CC) -c $(CFLAGS) -o $@ $< | |||||
# | |||||
# FreeType2 library anti-aliasing raster module | |||||
# | |||||
smooth.ppc.o: $(FTSRC)/smooth/smooth.c | |||||
$(CC) -c $(CFLAGS) -o $@ $< | |||||
# | |||||
# FreeType2 library 'sfnt' module | |||||
# | |||||
sfnt.ppc.o: $(FTSRC)/sfnt/sfnt.c | |||||
$(CC) -c $(CFLAGS) -o $@ $< | |||||
# | |||||
# FreeType2 library glyph and image caching system | |||||
# | |||||
ftcache.ppc.o: $(FTSRC)/cache/ftcache.c | |||||
$(CC) -c $(CFLAGS) -o $@ $< | |||||
# | |||||
# FreeType2 library OpenType font driver | |||||
# | |||||
cff.ppc.o: $(FTSRC)/cff/cff.c | |||||
$(CC) -c $(CFLAGS) -o $@ $< | |||||
# | |||||
# FreeType2 library TrueType font driver | |||||
# | |||||
truetype.ppc.o: $(FTSRC)/truetype/truetype.c | |||||
$(CC) -c $(CFLAGS) -o $@ $< | |||||
# | |||||
# FreeType2 library Type1 font driver | |||||
# | |||||
type1.ppc.o: $(FTSRC)/type1/type1.c | |||||
$(CC) -c $(CFLAGS) -o $@ $< | |||||
# | |||||
# FreeType2 library Type42 font driver | |||||
# | |||||
type42.ppc.o: $(FTSRC)/type42/type42.c | |||||
$(CC) -c $(CFLAGS) -o $@ $< | |||||
# | |||||
# FreeType2 library CID-keyed Type1 font driver | |||||
# | |||||
type1cid.ppc.o: $(FTSRC)/cid/type1cid.c | |||||
$(CC) -c $(CFLAGS) -o $@ $< | |||||
# | |||||
# FreeType2 library BDF bitmap font driver | |||||
# | |||||
bdf.ppc.o: $(FTSRC)/bdf/bdf.c | |||||
$(CC) -c $(CFLAGS) -o $@ $< | |||||
# | |||||
# FreeType2 library PCF bitmap font driver | |||||
# | |||||
pcf.ppc.o: $(FTSRC)/pcf/pcf.c | |||||
$(CC) -c $(CFLAGS) -o $@ $< | |||||
# | |||||
# FreeType2 library gzip support for compressed PCF bitmap fonts | |||||
# | |||||
gzip.ppc.o: $(FTSRC)/gzip/ftgzip.c | |||||
$(CC) -c $(CFLAGS) -o $@ $< | |||||
# FreeType2 library bzip2 support for compressed PCF bitmap fonts | |||||
# | |||||
bzip2.ppc.o: $(FTSRC)/bzip2/ftbzip2.c | |||||
$(CC) -c $(CFLAGS) -o $@ $< | |||||
# | |||||
# FreeType2 library compress support for compressed PCF bitmap fonts | |||||
# | |||||
lzw.ppc.o: $(FTSRC)/lzw/ftlzw.c | |||||
$(CC) -c $(CFLAGS) -o $@ $< | |||||
# | |||||
# FreeType2 library PFR font driver | |||||
# | |||||
pfr.ppc.o: $(FTSRC)/pfr/pfr.c | |||||
$(CC) -c $(CFLAGS) -o $@ $< | |||||
# | |||||
# FreeType2 library Windows FNT/FON bitmap font driver | |||||
# | |||||
winfnt.ppc.o: $(FTSRC)/winfonts/winfnt.c | |||||
$(CC) -c $(CFLAGS) -o $@ $< | |||||
# | |||||
# FreeType2 library TrueTypeGX Validator | |||||
# | |||||
gxvalid.ppc.o: $(FTSRC)/gxvalid/gxvalid.c | |||||
$(CC) -c $(CFLAGS) -o $@ $< | |||||
# | |||||
# FreeType2 library OpenType validator | |||||
# | |||||
otvalid.ppc.o: $(FTSRC)/otvalid/otvalid.c | |||||
$(CC) -c $(CFLAGS) -o $@ $< | |||||
BASEPPC = ftbase.ppc.o ftbbox.ppc.o ftbdf.ppc.o ftbitmap.ppc.o ftcid.ppc.o \ | |||||
oftfstype.ppc.o ftgasp.ppc.o ftglyph.ppc.o \ | |||||
ftgxval.ppc.o ftmm.ppc.o ftotval.ppc.o \ | |||||
ftpatent.ppc.o ftpfr.ppc.o ftstroke.ppc.o ftsynth.ppc.o \ | |||||
fttype1.ppc.o ftwinfnt.ppc.o | |||||
DEBUGPPC = ftdebug.ppc.o ftdebugpure.ppc.o | |||||
AFITPPC = autofit.ppc.o | |||||
GXVPPC = gxvalid.ppc.o | |||||
OTVPPC = otvalid.ppc.o | |||||
PSPPC = psaux.ppc.o psnames.ppc.o pshinter.ppc.o | |||||
RASTERPPC = raster.ppc.o smooth.ppc.o | |||||
FONTDPPC = cff.ppc.o type1.ppc.o type42.ppc.o type1cid.ppc.o truetype.ppc.o\ | |||||
bdf.ppc.o pcf.ppc.o pfr.ppc.o winfnt.ppc.o | |||||
libft2_ppc.a: $(BASEPPC) $(AFITPPC) $(GXVPPC) $(OTVPPC) $(PSPPC) $(RASTERPPC) sfnt.ppc.o ftcache.ppc.o $(FONTDPPC) gzip.ppc.o bzip2.ppc.o lzw.ppc.o | |||||
$(AR) $@ $(BASEPPC) $(AFITPPC) $(GXVPPC) $(OTVPPC) $(PSPPC) $(RASTERPPC) sfnt.ppc.o ftcache.ppc.o $(FONTDPPC) gzip.ppc.o bzip2.ppc.o lzw.ppc.o | |||||
-@ ($(RANLIB) $@ || true) >/dev/null 2>&1 | |||||
#Local Variables: | |||||
#coding: latin-1 | |||||
#End: |
@ -0,0 +1,297 @@ | |||||
# | |||||
# Makefile for FreeType2 link library using gcc 4.0.3 from the | |||||
# AmigaOS4 SDK | |||||
# | |||||
# Copyright (C) 2005-2021 by | |||||
# Werner Lemberg and Detlef Würkner. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
# to build from the builds/amiga directory call | |||||
# | |||||
# make -f makefile.os4 | |||||
# | |||||
# Your programs source code should start with this | |||||
# (uncomment the parts you do not need to keep the program small): | |||||
# ---8<--- | |||||
#define FT_USE_AUTOFIT // autofitter | |||||
#define FT_USE_RASTER // monochrome rasterizer | |||||
#define FT_USE_SMOOTH // anti-aliasing rasterizer | |||||
#define FT_USE_TT // truetype font driver | |||||
#define FT_USE_T1 // type1 font driver | |||||
#define FT_USE_T42 // type42 font driver | |||||
#define FT_USE_T1CID // cid-keyed type1 font driver | |||||
#define FT_USE_CFF // opentype font driver | |||||
#define FT_USE_BDF // bdf bitmap font driver | |||||
#define FT_USE_PCF // pcf bitmap font driver | |||||
#define FT_USE_PFR // pfr font driver | |||||
#define FT_USE_WINFNT // windows .fnt|.fon bitmap font driver | |||||
#define FT_USE_OTV // opentype validator | |||||
#define FT_USE_GXV // truetype gx validator | |||||
#include "FT:src/base/ftinit.c" | |||||
# ---8<--- | |||||
# | |||||
# link your programs with libft2_ppc.a and either ftsystem.ppc.o or ftsystempure.ppc.o | |||||
# (and either ftdebug.ppc.o or ftdebugpure.ppc.o if you enabled FT_DEBUG_LEVEL_ERROR or | |||||
# FT_DEBUG_LEVEL_TRACE in include/freetype/config/ftoption.h). | |||||
all: assign libft2_ppc.a ftsystem.ppc.o ftsystempure.ppc.o | |||||
assign: | |||||
assign FT: // | |||||
CC = ppc-amigaos-gcc | |||||
AR = ppc-amigaos-ar | |||||
RANLIB = ppc-amigaos-ranlib | |||||
DIRFLAGS = -Iinclude -I/FT/src -I/FT/include -I/SDK/include | |||||
WARNINGS = -Wall -W -Wundef -Wpointer-arith -Wbad-function-cast \ | |||||
-Waggregate-return -Wwrite-strings -Wshadow | |||||
OPTIONS = -DFT2_BUILD_LIBRARY -DNDEBUG -fno-builtin | |||||
OPTIMIZE = -O2 -fomit-frame-pointer -fstrength-reduce -finline-functions | |||||
CFLAGS = -mcrt=clib2 $(DIRFLAGS) $(WARNINGS) $(FT2FLAGS) $(OPTIONS) $(OPTIMIZE) | |||||
# | |||||
# FreeType2 library base | |||||
# | |||||
ftbase.ppc.o: FT:src/base/ftbase.c | |||||
$(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftbase.c | |||||
ftinit.ppc.o: FT:src/base/ftinit.c | |||||
$(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftinit.c | |||||
ftsystem.ppc.o: FT:src/base/ftsystem.c | |||||
$(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftsystem.c | |||||
# pure version for use in run-time library etc | |||||
ftsystempure.ppc.o: src/base/ftsystem.c | |||||
$(CC) -c $(CFLAGS) -o $@ src/base/ftsystem.c | |||||
# | |||||
# FreeType2 library base extensions | |||||
# | |||||
ftbbox.ppc.o: FT:src/base/ftbbox.c | |||||
$(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftbbox.c | |||||
ftbdf.ppc.o: FT:src/base/ftbdf.c | |||||
$(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftbdf.c | |||||
ftbitmap.ppc.o: FT:src/base/ftbitmap.c | |||||
$(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftbitmap.c | |||||
ftcid.ppc.o: FT:src/base/ftcid.c | |||||
$(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftcid.c | |||||
ftdebug.ppc.o: FT:src/base/ftdebug.c | |||||
$(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftdebug.c | |||||
# pure version for use in run-time library etc | |||||
ftdebugpure.ppc.o: src/base/ftdebug.c | |||||
$(CC) -c $(CFLAGS) -o $@ src/base/ftdebug.c | |||||
ftfstype.ppc.o: FT:src/base/ftfstype.c | |||||
$(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftfstype.c | |||||
ftgasp.ppc.o: FT:src/base/ftgasp.c | |||||
$(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftgasp.c | |||||
ftglyph.ppc.o: FT:src/base/ftglyph.c | |||||
$(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftglyph.c | |||||
ftgxval.ppc.o: FT:src/base/ftgxval.c | |||||
$(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftgxval.c | |||||
ftmm.ppc.o: FT:src/base/ftmm.c | |||||
$(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftmm.c | |||||
ftotval.ppc.o: FT:src/base/ftotval.c | |||||
$(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftotval.c | |||||
ftpatent.ppc.o: FT:src/base/ftpatent.c | |||||
$(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftpatent.c | |||||
ftpfr.ppc.o: FT:src/base/ftpfr.c | |||||
$(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftpfr.c | |||||
ftstroke.ppc.o: FT:src/base/ftstroke.c | |||||
$(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftstroke.c | |||||
ftsynth.ppc.o: FT:src/base/ftsynth.c | |||||
$(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftsynth.c | |||||
fttype1.ppc.o: FT:src/base/fttype1.c | |||||
$(CC) -c $(CFLAGS) -o $@ /FT/src/base/fttype1.c | |||||
ftwinfnt.ppc.o: FT:src/base/ftwinfnt.c | |||||
$(CC) -c $(CFLAGS) -o $@ /FT/src/base/ftwinfnt.c | |||||
# | |||||
# FreeType2 library autofitting module | |||||
# | |||||
autofit.ppc.o: FT:src/autofit/autofit.c | |||||
$(CC) -c $(CFLAGS) -o $@ /FT/src/autofit/autofit.c | |||||
# | |||||
# FreeType2 library postscript hinting module | |||||
# | |||||
pshinter.ppc.o: FT:src/pshinter/pshinter.c | |||||
$(CC) -c $(CFLAGS) -o $@ /FT/src/pshinter/pshinter.c | |||||
# | |||||
# FreeType2 library PS support module | |||||
# | |||||
psaux.ppc.o: FT:src/psaux/psaux.c | |||||
$(CC) -c $(CFLAGS) -o $@ /FT/src/psaux/psaux.c | |||||
# | |||||
# FreeType2 library PS glyph names module | |||||
# | |||||
psnames.ppc.o: FT:src/psnames/psnames.c | |||||
$(CC) -c $(CFLAGS) -o $@ /FT/src/psnames/psnames.c | |||||
# | |||||
# FreeType2 library monochrome raster module | |||||
# | |||||
raster.ppc.o: FT:src/raster/raster.c | |||||
$(CC) -c $(CFLAGS) -o $@ /FT/src/raster/raster.c | |||||
# | |||||
# FreeType2 library anti-aliasing raster module | |||||
# | |||||
smooth.ppc.o: FT:src/smooth/smooth.c | |||||
$(CC) -c $(CFLAGS) -o $@ /FT/src/smooth/smooth.c | |||||
# | |||||
# FreeType2 library 'sfnt' module | |||||
# | |||||
sfnt.ppc.o: FT:src/sfnt/sfnt.c | |||||
$(CC) -c $(CFLAGS) -o $@ /FT/src/sfnt/sfnt.c | |||||
# | |||||
# FreeType2 library glyph and image caching system | |||||
# | |||||
ftcache.ppc.o: FT:src/cache/ftcache.c | |||||
$(CC) -c $(CFLAGS) -o $@ /FT/src/cache/ftcache.c | |||||
# | |||||
# FreeType2 library OpenType font driver | |||||
# | |||||
cff.ppc.o: FT:src/cff/cff.c | |||||
$(CC) -c $(CFLAGS) -o $@ /FT/src/cff/cff.c | |||||
# | |||||
# FreeType2 library TrueType font driver | |||||
# | |||||
truetype.ppc.o: FT:src/truetype/truetype.c | |||||
$(CC) -c $(CFLAGS) -o $@ /FT/src/truetype/truetype.c | |||||
# | |||||
# FreeType2 library Type1 font driver | |||||
# | |||||
type1.ppc.o: FT:src/type1/type1.c | |||||
$(CC) -c $(CFLAGS) -o $@ /FT/src/type1/type1.c | |||||
# | |||||
# FreeType2 library Type42 font driver | |||||
# | |||||
type42.ppc.o: FT:src/type42/type42.c | |||||
$(CC) -c $(CFLAGS) -o $@ /FT/src/type42/type42.c | |||||
# | |||||
# FreeType2 library CID-keyed Type1 font driver | |||||
# | |||||
type1cid.ppc.o: FT:src/cid/type1cid.c | |||||
$(CC) -c $(CFLAGS) -o $@ /FT/src/cid/type1cid.c | |||||
# | |||||
# FreeType2 library BDF bitmap font driver | |||||
# | |||||
bdf.ppc.o: FT:src/bdf/bdf.c | |||||
$(CC) -c $(CFLAGS) -o $@ /FT/src/bdf/bdf.c | |||||
# | |||||
# FreeType2 library PCF bitmap font driver | |||||
# | |||||
pcf.ppc.o: FT:src/pcf/pcf.c | |||||
$(CC) -c $(CFLAGS) -o $@ /FT/src/pcf/pcf.c | |||||
# | |||||
# FreeType2 library gzip support for compressed PCF bitmap fonts | |||||
# | |||||
gzip.ppc.o: FT:src/gzip/ftgzip.c | |||||
$(CC) -c $(CFLAGS) -o $@ /FT/src/gzip/ftgzip.c | |||||
# | |||||
# FreeType2 library bzip2 support for compressed PCF bitmap fonts | |||||
# | |||||
bzip2.ppc.o: FT:src/bzip2/ftbzip2.c | |||||
$(CC) -c $(CFLAGS) -o $@ /FT/src/bzip2/ftbzip2.c | |||||
# | |||||
# FreeType2 library compress support for compressed PCF bitmap fonts | |||||
# | |||||
lzw.ppc.o: FT:src/lzw/ftlzw.c | |||||
$(CC) -c $(CFLAGS) -o $@ /FT/src/lzw/ftlzw.c | |||||
# | |||||
# FreeType2 library PFR font driver | |||||
# | |||||
pfr.ppc.o: FT:src/pfr/pfr.c | |||||
$(CC) -c $(CFLAGS) -o $@ /FT/src/pfr/pfr.c | |||||
# | |||||
# FreeType2 library Windows FNT/FON bitmap font driver | |||||
# | |||||
winfnt.ppc.o: FT:src/winfonts/winfnt.c | |||||
$(CC) -c $(CFLAGS) -o $@ /FT/src/winfonts/winfnt.c | |||||
# | |||||
# FreeType2 library TrueTypeGX Validator | |||||
# | |||||
gxvalid.ppc.o: FT:src/gxvalid/gxvalid.c | |||||
$(CC) -c $(CFLAGS) -Wno-aggregate-return -o $@ /FT/src/gxvalid/gxvalid.c | |||||
# | |||||
# FreeType2 library OpenType validator | |||||
# | |||||
otvalid.ppc.o: FT:src/otvalid/otvalid.c | |||||
$(CC) -c $(CFLAGS) -o $@ /FT/src/otvalid/otvalid.c | |||||
BASE = ftbase.ppc.o ftbbox.ppc.o ftbdf.ppc.o ftbitmap.ppc.o ftcid.ppc.o \ | |||||
ftfstype.ppc.o ftgasp.ppc.o ftglyph.ppc.o \ | |||||
ftgxval.ppc.o ftmm.ppc.o ftotval.ppc.o \ | |||||
ftpatent.ppc.o ftpfr.ppc.o ftstroke.ppc.o ftsynth.ppc.o \ | |||||
fttype1.ppc.o ftwinfnt.ppc.o | |||||
DEBUG = ftdebug.ppc.o ftdebugpure.ppc.o | |||||
AFIT = autofit.ppc.o | |||||
GXV = gxvalid.ppc.o | |||||
OTV = otvalid.ppc.o | |||||
PS = psaux.ppc.o psnames.ppc.o pshinter.ppc.o | |||||
RASTER = raster.ppc.o smooth.ppc.o | |||||
FONTD = cff.ppc.o type1.ppc.o type42.ppc.o type1cid.ppc.o truetype.ppc.o\ | |||||
bdf.ppc.o pcf.ppc.o pfr.ppc.o winfnt.ppc.o | |||||
libft2_ppc.a: $(BASE) $(AFIT) $(GXV) $(OTV) $(PS) $(RASTER) sfnt.ppc.o ftcache.ppc.o $(FONTD) gzip.ppc.o lzw.ppc.o | |||||
$(AR) r $@ $(BASE) $(AFIT) $(GXV) $(OTV) $(PS) $(RASTER) sfnt.ppc.o ftcache.ppc.o $(FONTD) gzip.ppc.o lzw.ppc.o | |||||
$(RANLIB) $@ | |||||
#Local Variables: | |||||
#coding: latin-1 | |||||
#End: |
@ -0,0 +1,299 @@ | |||||
# | |||||
# Makefile for FreeType2 link library using Amiga SAS/C 6.58 | |||||
# | |||||
# Copyright (C) 2005-2021 by | |||||
# Werner Lemberg and Detlef Würkner. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
# to build from the builds/amiga directory call | |||||
# | |||||
# smake assign | |||||
# smake | |||||
# | |||||
# Your programs source code should start with this | |||||
# (uncomment the parts you do not need to keep the program small): | |||||
# ---8<--- | |||||
#define FT_USE_AUTOFIT // autofitter | |||||
#define FT_USE_RASTER // monochrome rasterizer | |||||
#define FT_USE_SMOOTH // anti-aliasing rasterizer | |||||
#define FT_USE_TT // truetype font driver | |||||
#define FT_USE_T1 // type1 font driver | |||||
#define FT_USE_T42 // type42 font driver | |||||
#define FT_USE_T1CID // cid-keyed type1 font driver | |||||
#define FT_USE_CFF // opentype font driver | |||||
#define FT_USE_BDF // bdf bitmap font driver | |||||
#define FT_USE_PCF // pcf bitmap font driver | |||||
#define FT_USE_PFR // pfr font driver | |||||
#define FT_USE_WINFNT // windows .fnt|.fon bitmap font driver | |||||
#define FT_USE_OTV // opentype validator | |||||
#define FT_USE_GXV // truetype gx validator | |||||
#include "FT:src/base/ftinit.c" | |||||
# ---8<--- | |||||
# | |||||
# link your programs with ft2_680x0.lib and either ftsystem.o or ftsystempure.o | |||||
# (and either ftdebug.o or ftdebugpure.o if you enabled FT_DEBUG_LEVEL_ERROR or | |||||
# FT_DEBUG_LEVEL_TRACE in include/freetype/config/ftoption.h). | |||||
OBJBASE = ftbase.o ftbbox.o ftbdf.o ftbitmap.o ftcid.o ftfstype.o \ | |||||
ftgasp.o ftglyph.o ftgxval.o ftmm.o ftotval.o \ | |||||
ftpatent.o ftpfr.o ftstroke.o ftsynth.o fttype1.o ftwinfnt.o | |||||
OBJSYSTEM = ftsystem.o ftsystempure.o | |||||
OBJDEBUG = ftdebug.o ftdebugpure.o | |||||
OBJAFIT = autofit.o | |||||
OBJGXV = gxvalid.o | |||||
OBJOTV = otvalid.o | |||||
OBJPS = psaux.o psnames.o pshinter.o | |||||
OBJRASTER = raster.o smooth.o | |||||
OBJSFNT = sfnt.o | |||||
OBJCACHE = ftcache.o | |||||
OBJFONTD = cff.o type1.o type42.o type1cid.o\ | |||||
truetype.o winfnt.o bdf.o pcf.o pfr.o | |||||
CORE = FT:src/ | |||||
CPU = 68000 | |||||
#CPU = 68020 | |||||
#CPU = 68030 | |||||
#CPU = 68040 | |||||
#CPU = 68060 | |||||
OPTIMIZER = optinlocal | |||||
SCFLAGS = optimize opttime optsched strmerge data=faronly idlen=50 cpu=$(CPU)\ | |||||
idir=include/ idir=$(CORE) idir=FT:include/ nostackcheck nochkabort\ | |||||
noicons ignore=79,85,110,306 parameters=both define=FT2_BUILD_LIBRARY | |||||
LIB = ft2_$(CPU).lib | |||||
# sample linker options | |||||
OPTS = link lib=$(LIB),lib:sc.lib,lib:amiga.lib,lib:debug.lib\ | |||||
smallcode smalldata noicons utillib | |||||
# sample program entry | |||||
#myprog: myprog.c ftsystem.o $(LIB) | |||||
# sc $< programname=$@ ftsystem.o $(SCFLAGS) $(OPTS) | |||||
all: $(LIB) $(OBJSYSTEM) $(OBJDEBUG) | |||||
assign: | |||||
assign FT: // | |||||
# uses separate object modules in lib to make for easier debugging | |||||
# also, can make smaller programs if entire engine is not used | |||||
ft2_$(CPU).lib: $(OBJBASE) $(OBJAFIT) $(OBJOTV) $(OBJPS) $(OBJRASTER) $(OBJSFNT) $(OBJCACHE) $(OBJFONTD) lzw.o gzip.o bzip2.o | |||||
oml $@ r $(OBJBASE) $(OBJAFIT) $(OBJOTV) $(OBJPS) $(OBJRASTER) $(OBJSFNT) $(OBJCACHE) $(OBJFONTD) lzw.o gzip.o bzip2.o | |||||
clean: | |||||
-delete \#?.o | |||||
realclean: clean | |||||
-delete ft2$(CPU).lib | |||||
# | |||||
# freetype library base | |||||
# | |||||
ftbase.o: $(CORE)base/ftbase.c | |||||
sc $(SCFLAGS) objname=$@ $< | |||||
ftinit.o: $(CORE)base/ftinit.c | |||||
sc $(SCFLAGS) objname=$@ $< | |||||
ftsystem.o: $(CORE)base/ftsystem.c | |||||
sc $(SCFLAGS) objname=$@ $< | |||||
ftsystempure.o: src/base/ftsystem.c ## pure version for use in run-time library etc | |||||
sc $(SCFLAGS) objname=$@ $< | |||||
ftdebug.o: $(CORE)base/ftdebug.c | |||||
sc $(SCFLAGS) objname=$@ $< | |||||
ftdebugpure.o: src/base/ftdebug.c ## pure version for use in run-time library etc | |||||
sc $(SCFLAGS) objname=$@ $< | |||||
# | |||||
# freetype library base extensions | |||||
# | |||||
ftbbox.o: $(CORE)base/ftbbox.c | |||||
sc $(SCFLAGS) objname=$@ $< | |||||
ftbdf.o: $(CORE)base/ftbdf.c | |||||
sc $(SCFLAGS) objname=$@ $< | |||||
ftbitmap.o: $(CORE)base/ftbitmap.c | |||||
sc $(SCFLAGS) objname=$@ $< | |||||
ftcid.o: $(CORE)base/ftcid.c | |||||
sc $(SCFLAGS) objname=$@ $< | |||||
ftfstype.o: $(CORE)base/ftfstype.c | |||||
sc $(SCFLAGS) objname=$@ $< | |||||
ftgasp.o: $(CORE)base/ftgasp.c | |||||
sc $(SCFLAGS) objname=$@ $< | |||||
ftglyph.o: $(CORE)base/ftglyph.c | |||||
sc $(SCFLAGS) objname=$@ $< | |||||
ftgxval.o: $(CORE)base/ftgxval.c | |||||
sc $(SCFLAGS) objname=$@ $< | |||||
ftmm.o: $(CORE)base/ftmm.c | |||||
sc $(SCFLAGS) objname=$@ $< | |||||
ftotval.o: $(CORE)base/ftotval.c | |||||
sc $(SCFLAGS) objname=$@ $< | |||||
ftpatent.o: $(CORE)base/ftpatent.c | |||||
sc $(SCFLAGS) objname=$@ $< | |||||
ftpfr.o: $(CORE)base/ftpfr.c | |||||
sc $(SCFLAGS) objname=$@ $< | |||||
ftstroke.o: $(CORE)base/ftstroke.c | |||||
sc $(SCFLAGS) objname=$@ $< | |||||
ftsynth.o: $(CORE)base/ftsynth.c | |||||
sc $(SCFLAGS) objname=$@ $< | |||||
fttype1.o: $(CORE)base/fttype1.c | |||||
sc $(SCFLAGS) objname=$@ $< | |||||
ftwinfnt.o: $(CORE)base/ftwinfnt.c | |||||
sc $(SCFLAGS) objname=$@ $< | |||||
# | |||||
# freetype library autofitter module | |||||
# | |||||
autofit.o: $(CORE)autofit/autofit.c | |||||
sc $(SCFLAGS) objname=$@ $< | |||||
# | |||||
# freetype library PS hinting module | |||||
# | |||||
pshinter.o: $(CORE)pshinter/pshinter.c | |||||
sc $(SCFLAGS) objname=$@ $< | |||||
# | |||||
# freetype library PS support module | |||||
# | |||||
psaux.o: $(CORE)psaux/psaux.c | |||||
sc $(SCFLAGS) objname=$@ $< | |||||
# | |||||
# freetype library PS glyph names module | |||||
# | |||||
psnames.o: $(CORE)psnames/psnames.c | |||||
sc $(SCFLAGS) code=far objname=$@ $< | |||||
# | |||||
# freetype library monochrome raster module | |||||
# | |||||
raster.o: $(CORE)raster/raster.c | |||||
sc $(SCFLAGS) objname=$@ $< | |||||
# | |||||
# freetype library anti-aliasing raster module | |||||
# | |||||
smooth.o: $(CORE)smooth/smooth.c | |||||
sc $(SCFLAGS) objname=$@ $< | |||||
# | |||||
# freetype library 'sfnt' module | |||||
# | |||||
sfnt.o: $(CORE)sfnt/sfnt.c | |||||
sc $(SCFLAGS) objname=$@ $< | |||||
# | |||||
# freetype library glyph and image caching system (still experimental) | |||||
# | |||||
ftcache.o: $(CORE)cache/ftcache.c | |||||
sc $(SCFLAGS) objname=$@ $< | |||||
# | |||||
# freetype library OpenType font driver | |||||
# | |||||
cff.o: $(CORE)cff/cff.c | |||||
sc $(SCFLAGS) objname=$@ $< | |||||
# | |||||
# freetype library TrueType font driver | |||||
# | |||||
truetype.o: $(CORE)truetype/truetype.c | |||||
sc $(SCFLAGS) objname=$@ $< | |||||
# | |||||
# freetype library Type1 font driver | |||||
# | |||||
type1.o: $(CORE)type1/type1.c | |||||
sc $(SCFLAGS) objname=$@ $< | |||||
# | |||||
# FreeType2 library Type42 font driver | |||||
# | |||||
type42.o: $(CORE)type42/type42.c | |||||
sc $(SCFLAGS) objname=$@ $< | |||||
# | |||||
# freetype library CID-keyed Type1 font driver | |||||
# | |||||
type1cid.o: $(CORE)cid/type1cid.c | |||||
sc $(SCFLAGS) objname=$@ $< | |||||
# | |||||
# freetype library CID-keyed Type1 font driver extensions | |||||
# | |||||
#cidafm.o: $(CORE)cid/cidafm.c | |||||
# sc $(SCFLAGS) objname=$@ $< | |||||
# | |||||
# freetype library BDF bitmap font driver | |||||
# | |||||
bdf.o: $(CORE)bdf/bdf.c | |||||
sc $(SCFLAGS) objname=$@ $< | |||||
# | |||||
# freetype library PCF bitmap font driver | |||||
# | |||||
pcf.o: $(CORE)pcf/pcf.c | |||||
sc $(SCFLAGS) objname=$@ $< | |||||
# | |||||
# freetype library gzip support for compressed PCF bitmap fonts | |||||
# | |||||
gzip.o: $(CORE)gzip/ftgzip.c | |||||
sc $(SCFLAGS) define FAR objname=$@ $< | |||||
# | |||||
# freetype library bzip2 support for compressed PCF bitmap fonts | |||||
# | |||||
bzip2.o: $(CORE)bzip2/ftbzip2.c | |||||
sc $(SCFLAGS) define FAR objname=$@ $< | |||||
# | |||||
# freetype library compress support for compressed PCF bitmap fonts | |||||
# | |||||
lzw.o: $(CORE)lzw/ftlzw.c | |||||
sc $(SCFLAGS) objname=$@ $< | |||||
# | |||||
# freetype library PFR font driver | |||||
# | |||||
pfr.o: $(CORE)pfr/pfr.c | |||||
sc $(SCFLAGS) objname=$@ $< | |||||
# | |||||
# freetype library Windows FNT/FON bitmap font driver | |||||
# | |||||
winfnt.o: $(CORE)winfonts/winfnt.c | |||||
sc $(SCFLAGS) objname=$@ $< | |||||
# | |||||
# freetype library TrueTypeGX validator | |||||
# | |||||
gxvalid.o: $(CORE)gxvalid/gxvalid.c | |||||
sc $(SCFLAGS) objname=$@ $< | |||||
# | |||||
# freetype library OpenType validator | |||||
# | |||||
otvalid.o: $(CORE)otvalid/otvalid.c | |||||
sc $(SCFLAGS) objname=$@ $< | |||||
#Local Variables: | |||||
#coding: latin-1 | |||||
#End: |
@ -0,0 +1,348 @@ | |||||
/**************************************************************************** | |||||
* | |||||
* ftdebug.c | |||||
* | |||||
* Debugging and logging component for amiga (body). | |||||
* | |||||
* Copyright (C) 1996-2021 by | |||||
* David Turner, Robert Wilhelm, Werner Lemberg, and Detlef Wuerkner. | |||||
* | |||||
* This file is part of the FreeType project, and may only be used, | |||||
* modified, and distributed under the terms of the FreeType project | |||||
* license, LICENSE.TXT. By continuing to use, modify, or distribute | |||||
* this file you indicate that you have read the license and | |||||
* understand and accept it fully. | |||||
* | |||||
*/ | |||||
/************************************************************************** | |||||
* | |||||
* This component contains various macros and functions used to ease the | |||||
* debugging of the FreeType engine. Its main purpose is in assertion | |||||
* checking, tracing, and error detection. | |||||
* | |||||
* There are now three debugging modes: | |||||
* | |||||
* - trace mode | |||||
* | |||||
* Error and trace messages are sent to the log file (which can be the | |||||
* standard error output). | |||||
* | |||||
* - error mode | |||||
* | |||||
* Only error messages are generated. | |||||
* | |||||
* - release mode: | |||||
* | |||||
* No error message is sent or generated. The code is free from any | |||||
* debugging parts. | |||||
* | |||||
*/ | |||||
/* | |||||
* Based on the default `ftdebug.c' file, | |||||
* replaced `vprintf' with `KVPrintF', | |||||
* commented out `exit', | |||||
* replaced `getenv' with `GetVar'. | |||||
*/ | |||||
#include <exec/types.h> | |||||
#include <utility/tagitem.h> | |||||
#include <dos/exall.h> | |||||
#include <dos/var.h> | |||||
#define __NOLIBBASE__ | |||||
#define __NOLOBALIFACE__ | |||||
#define __USE_INLINE__ | |||||
#include <proto/dos.h> | |||||
#include <clib/debug_protos.h> | |||||
#ifndef __amigaos4__ | |||||
extern struct Library* DOSBase; | |||||
#else | |||||
extern struct DOSIFace* IDOS; | |||||
#endif | |||||
#include <ft2build.h> | |||||
#include <freetype/freetype.h> | |||||
#include <freetype/internal/ftdebug.h> | |||||
#ifdef FT_DEBUG_LEVEL_ERROR | |||||
/* documentation is in ftdebug.h */ | |||||
FT_BASE_DEF( void ) | |||||
FT_Message( const char* fmt, | |||||
... ) | |||||
{ | |||||
va_list ap; | |||||
va_start( ap, fmt ); | |||||
KVPrintF( fmt, ap ); | |||||
va_end( ap ); | |||||
} | |||||
/* documentation is in ftdebug.h */ | |||||
FT_BASE_DEF( void ) | |||||
FT_Panic( const char* fmt, | |||||
... ) | |||||
{ | |||||
va_list ap; | |||||
va_start( ap, fmt ); | |||||
KVPrintF( fmt, ap ); | |||||
va_end( ap ); | |||||
/* exit( EXIT_FAILURE ); */ | |||||
} | |||||
/* documentation is in ftdebug.h */ | |||||
FT_BASE_DEF( int ) | |||||
FT_Throw( FT_Error error, | |||||
int line, | |||||
const char* file ) | |||||
{ | |||||
#if 0 | |||||
/* activating the code in this block makes FreeType very chatty */ | |||||
fprintf( stderr, | |||||
"%s:%d: error 0x%02x: %s\n", | |||||
file, | |||||
line, | |||||
error, | |||||
FT_Error_String( error ) ); | |||||
#else | |||||
FT_UNUSED( error ); | |||||
FT_UNUSED( line ); | |||||
FT_UNUSED( file ); | |||||
#endif | |||||
return 0; | |||||
} | |||||
#endif /* FT_DEBUG_LEVEL_ERROR */ | |||||
#ifdef FT_DEBUG_LEVEL_TRACE | |||||
/* array of trace levels, initialized to 0; */ | |||||
/* this gets adjusted at run-time */ | |||||
static int ft_trace_levels_enabled[trace_count]; | |||||
/* array of trace levels, always initialized to 0 */ | |||||
static int ft_trace_levels_disabled[trace_count]; | |||||
/* a pointer to either `ft_trace_levels_enabled' */ | |||||
/* or `ft_trace_levels_disabled' */ | |||||
int* ft_trace_levels; | |||||
/* define array of trace toggle names */ | |||||
#define FT_TRACE_DEF( x ) #x , | |||||
static const char* ft_trace_toggles[trace_count + 1] = | |||||
{ | |||||
#include <freetype/internal/fttrace.h> | |||||
NULL | |||||
}; | |||||
#undef FT_TRACE_DEF | |||||
/* documentation is in ftdebug.h */ | |||||
FT_BASE_DEF( FT_Int ) | |||||
FT_Trace_Get_Count( void ) | |||||
{ | |||||
return trace_count; | |||||
} | |||||
/* documentation is in ftdebug.h */ | |||||
FT_BASE_DEF( const char * ) | |||||
FT_Trace_Get_Name( FT_Int idx ) | |||||
{ | |||||
int max = FT_Trace_Get_Count(); | |||||
if ( idx < max ) | |||||
return ft_trace_toggles[idx]; | |||||
else | |||||
return NULL; | |||||
} | |||||
/* documentation is in ftdebug.h */ | |||||
FT_BASE_DEF( void ) | |||||
FT_Trace_Disable( void ) | |||||
{ | |||||
ft_trace_levels = ft_trace_levels_disabled; | |||||
} | |||||
/* documentation is in ftdebug.h */ | |||||
FT_BASE_DEF( void ) | |||||
FT_Trace_Enable( void ) | |||||
{ | |||||
ft_trace_levels = ft_trace_levels_enabled; | |||||
} | |||||
/************************************************************************** | |||||
* | |||||
* Initialize the tracing sub-system. This is done by retrieving the | |||||
* value of the `FT2_DEBUG' environment variable. It must be a list of | |||||
* toggles, separated by spaces, `;', or `,'. Example: | |||||
* | |||||
* export FT2_DEBUG="any:3 memory:7 stream:5" | |||||
* | |||||
* This requests that all levels be set to 3, except the trace level for | |||||
* the memory and stream components which are set to 7 and 5, | |||||
* respectively. | |||||
* | |||||
* See the file `include/freetype/internal/fttrace.h' for details of | |||||
* the available toggle names. | |||||
* | |||||
* The level must be between 0 and 7; 0 means quiet (except for serious | |||||
* runtime errors), and 7 means _very_ verbose. | |||||
*/ | |||||
FT_BASE_DEF( void ) | |||||
ft_debug_init( void ) | |||||
{ | |||||
/* const char* ft2_debug = ft_getenv( "FT2_DEBUG" ); */ | |||||
char buf[256]; | |||||
const char* ft2_debug = &buf[0]; | |||||
/* if ( ft2_debug ) */ | |||||
if ( GetVar( "FT2_DEBUG", (STRPTR)ft2_debug, 256, LV_VAR ) > 0 ) | |||||
{ | |||||
const char* p = ft2_debug; | |||||
const char* q; | |||||
for ( ; *p; p++ ) | |||||
{ | |||||
/* skip leading whitespace and separators */ | |||||
if ( *p == ' ' || *p == '\t' || *p == ',' || *p == ';' || *p == '=' ) | |||||
continue; | |||||
/* read toggle name, followed by ':' */ | |||||
q = p; | |||||
while ( *p && *p != ':' ) | |||||
p++; | |||||
if ( !*p ) | |||||
break; | |||||
if ( *p == ':' && p > q ) | |||||
{ | |||||
FT_Int n, i, len = (FT_Int)( p - q ); | |||||
FT_Int level = -1, found = -1; | |||||
for ( n = 0; n < trace_count; n++ ) | |||||
{ | |||||
const char* toggle = ft_trace_toggles[n]; | |||||
for ( i = 0; i < len; i++ ) | |||||
{ | |||||
if ( toggle[i] != q[i] ) | |||||
break; | |||||
} | |||||
if ( i == len && toggle[i] == 0 ) | |||||
{ | |||||
found = n; | |||||
break; | |||||
} | |||||
} | |||||
/* read level */ | |||||
p++; | |||||
if ( *p ) | |||||
{ | |||||
level = *p - '0'; | |||||
if ( level < 0 || level > 7 ) | |||||
level = -1; | |||||
} | |||||
if ( found >= 0 && level >= 0 ) | |||||
{ | |||||
if ( found == trace_any ) | |||||
{ | |||||
/* special case for `any' */ | |||||
for ( n = 0; n < trace_count; n++ ) | |||||
ft_trace_levels_enabled[n] = level; | |||||
} | |||||
else | |||||
ft_trace_levels_enabled[found] = level; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
ft_trace_levels = ft_trace_levels_enabled; | |||||
} | |||||
#else /* !FT_DEBUG_LEVEL_TRACE */ | |||||
FT_BASE_DEF( void ) | |||||
ft_debug_init( void ) | |||||
{ | |||||
/* nothing */ | |||||
} | |||||
FT_BASE_DEF( FT_Int ) | |||||
FT_Trace_Get_Count( void ) | |||||
{ | |||||
return 0; | |||||
} | |||||
FT_BASE_DEF( const char * ) | |||||
FT_Trace_Get_Name( FT_Int idx ) | |||||
{ | |||||
FT_UNUSED( idx ); | |||||
return NULL; | |||||
} | |||||
FT_BASE_DEF( void ) | |||||
FT_Trace_Disable( void ) | |||||
{ | |||||
/* nothing */ | |||||
} | |||||
/* documentation is in ftdebug.h */ | |||||
FT_BASE_DEF( void ) | |||||
FT_Trace_Enable( void ) | |||||
{ | |||||
/* nothing */ | |||||
} | |||||
#endif /* !FT_DEBUG_LEVEL_TRACE */ | |||||
/* END */ |
@ -0,0 +1,530 @@ | |||||
/***************************************************************************/ | |||||
/* */ | |||||
/* ftsystem.c */ | |||||
/* */ | |||||
/* Amiga-specific FreeType low-level system interface (body). */ | |||||
/* */ | |||||
/* Copyright (C) 1996-2021 by */ | |||||
/* David Turner, Robert Wilhelm, Werner Lemberg and Detlef Würkner. */ | |||||
/* */ | |||||
/* This file is part of the FreeType project, and may only be used, */ | |||||
/* modified, and distributed under the terms of the FreeType project */ | |||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ | |||||
/* this file you indicate that you have read the license and */ | |||||
/* understand and accept it fully. */ | |||||
/* */ | |||||
/***************************************************************************/ | |||||
/*************************************************************************/ | |||||
/* */ | |||||
/* This file contains the Amiga interface used by FreeType to access */ | |||||
/* low-level, i.e. memory management, i/o access as well as thread */ | |||||
/* synchronisation. */ | |||||
/* */ | |||||
/*************************************************************************/ | |||||
/*************************************************************************/ | |||||
/* */ | |||||
/* Maintained by Detlef Würkner <TetiSoft@apg.lahn.de> */ | |||||
/* */ | |||||
/* Based on the original ftsystem.c, */ | |||||
/* modified to avoid fopen(), fclose(), fread(), fseek(), ftell(), */ | |||||
/* malloc(), realloc(), and free(). */ | |||||
/* */ | |||||
/* Those C library functions are often not thread-safe or cant be */ | |||||
/* used in a shared Amiga library. If that's not a problem for you, */ | |||||
/* you can of course use the default ftsystem.c with C library calls */ | |||||
/* instead. */ | |||||
/* */ | |||||
/* This implementation needs exec V39+ because it uses AllocPooled() etc */ | |||||
/* */ | |||||
/*************************************************************************/ | |||||
#define __NOLIBBASE__ | |||||
#define __NOGLOBALIFACE__ | |||||
#define __USE_INLINE__ | |||||
#include <proto/exec.h> | |||||
#include <dos/stdio.h> | |||||
#include <proto/dos.h> | |||||
#ifdef __amigaos4__ | |||||
extern struct ExecIFace *IExec; | |||||
extern struct DOSIFace *IDOS; | |||||
#else | |||||
extern struct Library *SysBase; | |||||
extern struct Library *DOSBase; | |||||
#endif | |||||
#define IOBUF_SIZE 512 | |||||
/* structure that helps us to avoid | |||||
* useless calls of Seek() and Read() | |||||
*/ | |||||
struct SysFile | |||||
{ | |||||
BPTR file; | |||||
ULONG iobuf_start; | |||||
ULONG iobuf_end; | |||||
UBYTE iobuf[IOBUF_SIZE]; | |||||
}; | |||||
#ifndef __amigaos4__ | |||||
/* C implementation of AllocVecPooled (see autodoc exec/AllocPooled) */ | |||||
APTR | |||||
Alloc_VecPooled( APTR poolHeader, | |||||
ULONG memSize ) | |||||
{ | |||||
ULONG newSize = memSize + sizeof ( ULONG ); | |||||
ULONG *mem = AllocPooled( poolHeader, newSize ); | |||||
if ( !mem ) | |||||
return NULL; | |||||
*mem = newSize; | |||||
return mem + 1; | |||||
} | |||||
/* C implementation of FreeVecPooled (see autodoc exec/AllocPooled) */ | |||||
void | |||||
Free_VecPooled( APTR poolHeader, | |||||
APTR memory ) | |||||
{ | |||||
ULONG *realmem = (ULONG *)memory - 1; | |||||
FreePooled( poolHeader, realmem, *realmem ); | |||||
} | |||||
#endif | |||||
#include <ft2build.h> | |||||
#include FT_CONFIG_CONFIG_H | |||||
#include <freetype/internal/ftdebug.h> | |||||
#include <freetype/ftsystem.h> | |||||
#include <freetype/fterrors.h> | |||||
#include <freetype/fttypes.h> | |||||
#include <stdio.h> | |||||
#include <stdlib.h> | |||||
#include <string.h> | |||||
/*************************************************************************/ | |||||
/* */ | |||||
/* MEMORY MANAGEMENT INTERFACE */ | |||||
/* */ | |||||
/*************************************************************************/ | |||||
/*************************************************************************/ | |||||
/* */ | |||||
/* It is not necessary to do any error checking for the */ | |||||
/* allocation-related functions. This is done by the higher level */ | |||||
/* routines like ft_mem_alloc() or ft_mem_realloc(). */ | |||||
/* */ | |||||
/*************************************************************************/ | |||||
/*************************************************************************/ | |||||
/* */ | |||||
/* <Function> */ | |||||
/* ft_alloc */ | |||||
/* */ | |||||
/* <Description> */ | |||||
/* The memory allocation function. */ | |||||
/* */ | |||||
/* <Input> */ | |||||
/* memory :: A pointer to the memory object. */ | |||||
/* */ | |||||
/* size :: The requested size in bytes. */ | |||||
/* */ | |||||
/* <Return> */ | |||||
/* The address of newly allocated block. */ | |||||
/* */ | |||||
FT_CALLBACK_DEF( void* ) | |||||
ft_alloc( FT_Memory memory, | |||||
long size ) | |||||
{ | |||||
#ifdef __amigaos4__ | |||||
return AllocVecPooled( memory->user, size ); | |||||
#else | |||||
return Alloc_VecPooled( memory->user, size ); | |||||
#endif | |||||
} | |||||
/*************************************************************************/ | |||||
/* */ | |||||
/* <Function> */ | |||||
/* ft_realloc */ | |||||
/* */ | |||||
/* <Description> */ | |||||
/* The memory reallocation function. */ | |||||
/* */ | |||||
/* <Input> */ | |||||
/* memory :: A pointer to the memory object. */ | |||||
/* */ | |||||
/* cur_size :: The current size of the allocated memory block. */ | |||||
/* */ | |||||
/* new_size :: The newly requested size in bytes. */ | |||||
/* */ | |||||
/* block :: The current address of the block in memory. */ | |||||
/* */ | |||||
/* <Return> */ | |||||
/* The address of the reallocated memory block. */ | |||||
/* */ | |||||
FT_CALLBACK_DEF( void* ) | |||||
ft_realloc( FT_Memory memory, | |||||
long cur_size, | |||||
long new_size, | |||||
void* block ) | |||||
{ | |||||
void* new_block; | |||||
#ifdef __amigaos4__ | |||||
new_block = AllocVecPooled ( memory->user, new_size ); | |||||
#else | |||||
new_block = Alloc_VecPooled ( memory->user, new_size ); | |||||
#endif | |||||
if ( new_block != NULL ) | |||||
{ | |||||
CopyMem ( block, new_block, | |||||
( new_size > cur_size ) ? cur_size : new_size ); | |||||
#ifdef __amigaos4__ | |||||
FreeVecPooled ( memory->user, block ); | |||||
#else | |||||
Free_VecPooled ( memory->user, block ); | |||||
#endif | |||||
} | |||||
return new_block; | |||||
} | |||||
/*************************************************************************/ | |||||
/* */ | |||||
/* <Function> */ | |||||
/* ft_free */ | |||||
/* */ | |||||
/* <Description> */ | |||||
/* The memory release function. */ | |||||
/* */ | |||||
/* <Input> */ | |||||
/* memory :: A pointer to the memory object. */ | |||||
/* */ | |||||
/* block :: The address of block in memory to be freed. */ | |||||
/* */ | |||||
FT_CALLBACK_DEF( void ) | |||||
ft_free( FT_Memory memory, | |||||
void* block ) | |||||
{ | |||||
#ifdef __amigaos4__ | |||||
FreeVecPooled( memory->user, block ); | |||||
#else | |||||
Free_VecPooled( memory->user, block ); | |||||
#endif | |||||
} | |||||
/*************************************************************************/ | |||||
/* */ | |||||
/* RESOURCE MANAGEMENT INTERFACE */ | |||||
/* */ | |||||
/*************************************************************************/ | |||||
/*************************************************************************/ | |||||
/* */ | |||||
/* The macro FT_COMPONENT is used in trace mode. It is an implicit */ | |||||
/* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ | |||||
/* messages during execution. */ | |||||
/* */ | |||||
#undef FT_COMPONENT | |||||
#define FT_COMPONENT io | |||||
/* We use the macro STREAM_FILE for convenience to extract the */ | |||||
/* system-specific stream handle from a given FreeType stream object */ | |||||
#define STREAM_FILE( stream ) ( (struct SysFile *)stream->descriptor.pointer ) | |||||
/*************************************************************************/ | |||||
/* */ | |||||
/* <Function> */ | |||||
/* ft_amiga_stream_close */ | |||||
/* */ | |||||
/* <Description> */ | |||||
/* The function to close a stream. */ | |||||
/* */ | |||||
/* <Input> */ | |||||
/* stream :: A pointer to the stream object. */ | |||||
/* */ | |||||
FT_CALLBACK_DEF( void ) | |||||
ft_amiga_stream_close( FT_Stream stream ) | |||||
{ | |||||
struct SysFile* sysfile; | |||||
sysfile = STREAM_FILE( stream ); | |||||
Close ( sysfile->file ); | |||||
FreeMem ( sysfile, sizeof ( struct SysFile )); | |||||
stream->descriptor.pointer = NULL; | |||||
stream->size = 0; | |||||
stream->base = 0; | |||||
} | |||||
/*************************************************************************/ | |||||
/* */ | |||||
/* <Function> */ | |||||
/* ft_amiga_stream_io */ | |||||
/* */ | |||||
/* <Description> */ | |||||
/* The function to open a stream. */ | |||||
/* */ | |||||
/* <Input> */ | |||||
/* stream :: A pointer to the stream object. */ | |||||
/* */ | |||||
/* offset :: The position in the data stream to start reading. */ | |||||
/* */ | |||||
/* buffer :: The address of buffer to store the read data. */ | |||||
/* */ | |||||
/* count :: The number of bytes to read from the stream. */ | |||||
/* */ | |||||
/* <Return> */ | |||||
/* The number of bytes actually read. */ | |||||
/* */ | |||||
FT_CALLBACK_DEF( unsigned long ) | |||||
ft_amiga_stream_io( FT_Stream stream, | |||||
unsigned long offset, | |||||
unsigned char* buffer, | |||||
unsigned long count ) | |||||
{ | |||||
struct SysFile* sysfile; | |||||
unsigned long read_bytes; | |||||
if ( count != 0 ) | |||||
{ | |||||
sysfile = STREAM_FILE( stream ); | |||||
/* handle the seek */ | |||||
if ( (offset < sysfile->iobuf_start) || (offset + count > sysfile->iobuf_end) ) | |||||
{ | |||||
/* requested offset implies we need a buffer refill */ | |||||
if ( !sysfile->iobuf_end || offset != sysfile->iobuf_end ) | |||||
{ | |||||
/* a physical seek is necessary */ | |||||
Seek( sysfile->file, offset, OFFSET_BEGINNING ); | |||||
} | |||||
sysfile->iobuf_start = offset; | |||||
sysfile->iobuf_end = 0; /* trigger a buffer refill */ | |||||
} | |||||
/* handle the read */ | |||||
if ( offset + count <= sysfile->iobuf_end ) | |||||
{ | |||||
/* we have buffer and requested bytes are all inside our buffer */ | |||||
CopyMem( &sysfile->iobuf[offset - sysfile->iobuf_start], buffer, count ); | |||||
read_bytes = count; | |||||
} | |||||
else | |||||
{ | |||||
/* (re)fill buffer */ | |||||
if ( count <= IOBUF_SIZE ) | |||||
{ | |||||
/* requested bytes is a subset of the buffer */ | |||||
read_bytes = Read( sysfile->file, sysfile->iobuf, IOBUF_SIZE ); | |||||
if ( read_bytes == -1UL ) | |||||
{ | |||||
/* error */ | |||||
read_bytes = 0; | |||||
} | |||||
else | |||||
{ | |||||
sysfile->iobuf_end = offset + read_bytes; | |||||
CopyMem( sysfile->iobuf, buffer, count ); | |||||
if ( read_bytes > count ) | |||||
{ | |||||
read_bytes = count; | |||||
} | |||||
} | |||||
} | |||||
else | |||||
{ | |||||
/* we actually need more than our buffer can hold, so we decide | |||||
** to do a single big read, and then copy the last IOBUF_SIZE | |||||
** bytes of that to our internal buffer for later use */ | |||||
read_bytes = Read( sysfile->file, buffer, count ); | |||||
if ( read_bytes == -1UL ) | |||||
{ | |||||
/* error */ | |||||
read_bytes = 0; | |||||
} | |||||
else | |||||
{ | |||||
ULONG bufsize; | |||||
bufsize = ( read_bytes > IOBUF_SIZE ) ? IOBUF_SIZE : read_bytes; | |||||
sysfile->iobuf_end = offset + read_bytes; | |||||
sysfile->iobuf_start = sysfile->iobuf_end - bufsize; | |||||
CopyMem( &buffer[read_bytes - bufsize] , sysfile->iobuf, bufsize ); | |||||
} | |||||
} | |||||
} | |||||
} | |||||
else | |||||
{ | |||||
read_bytes = 0; | |||||
} | |||||
return read_bytes; | |||||
} | |||||
/* documentation is in ftobjs.h */ | |||||
FT_BASE_DEF( FT_Error ) | |||||
FT_Stream_Open( FT_Stream stream, | |||||
const char* filepathname ) | |||||
{ | |||||
struct FileInfoBlock* fib; | |||||
struct SysFile* sysfile; | |||||
if ( !stream ) | |||||
return FT_THROW( Invalid_Stream_Handle ); | |||||
#ifdef __amigaos4__ | |||||
sysfile = AllocMem ( sizeof (struct SysFile ), MEMF_SHARED ); | |||||
#else | |||||
sysfile = AllocMem ( sizeof (struct SysFile ), MEMF_PUBLIC ); | |||||
#endif | |||||
if ( !sysfile ) | |||||
{ | |||||
FT_ERROR(( "FT_Stream_Open:" )); | |||||
FT_ERROR(( " could not open `%s'\n", filepathname )); | |||||
return FT_THROW( Cannot_Open_Resource ); | |||||
} | |||||
sysfile->file = Open( (STRPTR)filepathname, MODE_OLDFILE ); | |||||
if ( !sysfile->file ) | |||||
{ | |||||
FreeMem ( sysfile, sizeof ( struct SysFile )); | |||||
FT_ERROR(( "FT_Stream_Open:" )); | |||||
FT_ERROR(( " could not open `%s'\n", filepathname )); | |||||
return FT_THROW( Cannot_Open_Resource ); | |||||
} | |||||
fib = AllocDosObject( DOS_FIB, NULL ); | |||||
if ( !fib ) | |||||
{ | |||||
Close ( sysfile->file ); | |||||
FreeMem ( sysfile, sizeof ( struct SysFile )); | |||||
FT_ERROR(( "FT_Stream_Open:" )); | |||||
FT_ERROR(( " could not open `%s'\n", filepathname )); | |||||
return FT_THROW( Cannot_Open_Resource ); | |||||
} | |||||
if ( !( ExamineFH( sysfile->file, fib ) ) ) | |||||
{ | |||||
FreeDosObject( DOS_FIB, fib ); | |||||
Close ( sysfile->file ); | |||||
FreeMem ( sysfile, sizeof ( struct SysFile )); | |||||
FT_ERROR(( "FT_Stream_Open:" )); | |||||
FT_ERROR(( " could not open `%s'\n", filepathname )); | |||||
return FT_THROW( Cannot_Open_Resource ); | |||||
} | |||||
stream->size = fib->fib_Size; | |||||
FreeDosObject( DOS_FIB, fib ); | |||||
stream->descriptor.pointer = (void *)sysfile; | |||||
stream->pathname.pointer = (char*)filepathname; | |||||
sysfile->iobuf_start = 0; | |||||
sysfile->iobuf_end = 0; | |||||
stream->pos = 0; | |||||
stream->read = ft_amiga_stream_io; | |||||
stream->close = ft_amiga_stream_close; | |||||
if ( !stream->size ) | |||||
{ | |||||
ft_amiga_stream_close( stream ); | |||||
FT_ERROR(( "FT_Stream_Open:" )); | |||||
FT_ERROR(( " opened `%s' but zero-sized\n", filepathname )); | |||||
return FT_THROW( Cannot_Open_Stream ); | |||||
} | |||||
FT_TRACE1(( "FT_Stream_Open:" )); | |||||
FT_TRACE1(( " opened `%s' (%ld bytes) successfully\n", | |||||
filepathname, stream->size )); | |||||
return FT_Err_Ok; | |||||
} | |||||
#ifdef FT_DEBUG_MEMORY | |||||
extern FT_Int | |||||
ft_mem_debug_init( FT_Memory memory ); | |||||
extern void | |||||
ft_mem_debug_done( FT_Memory memory ); | |||||
#endif | |||||
/* documentation is in ftobjs.h */ | |||||
FT_BASE_DEF( FT_Memory ) | |||||
FT_New_Memory( void ) | |||||
{ | |||||
FT_Memory memory; | |||||
#ifdef __amigaos4__ | |||||
memory = (FT_Memory)AllocVec( sizeof ( *memory ), MEMF_SHARED ); | |||||
#else | |||||
memory = (FT_Memory)AllocVec( sizeof ( *memory ), MEMF_PUBLIC ); | |||||
#endif | |||||
if ( memory ) | |||||
{ | |||||
#ifdef __amigaos4__ | |||||
memory->user = CreatePool( MEMF_SHARED, 16384, 16384 ); | |||||
#else | |||||
memory->user = CreatePool( MEMF_PUBLIC, 16384, 16384 ); | |||||
#endif | |||||
if ( memory->user == NULL ) | |||||
{ | |||||
FreeVec( memory ); | |||||
memory = NULL; | |||||
} | |||||
else | |||||
{ | |||||
memory->alloc = ft_alloc; | |||||
memory->realloc = ft_realloc; | |||||
memory->free = ft_free; | |||||
#ifdef FT_DEBUG_MEMORY | |||||
ft_mem_debug_init( memory ); | |||||
#endif | |||||
} | |||||
} | |||||
return memory; | |||||
} | |||||
/* documentation is in ftobjs.h */ | |||||
FT_BASE_DEF( void ) | |||||
FT_Done_Memory( FT_Memory memory ) | |||||
{ | |||||
#ifdef FT_DEBUG_MEMORY | |||||
ft_mem_debug_done( memory ); | |||||
#endif | |||||
DeletePool( memory->user ); | |||||
FreeVec( memory ); | |||||
} | |||||
/* | |||||
Local Variables: | |||||
coding: latin-1 | |||||
End: | |||||
*/ | |||||
/* END */ |
@ -0,0 +1,77 @@ | |||||
# | |||||
# FreeType 2 configuration rules for a `normal' ANSI system | |||||
# | |||||
# Copyright (C) 1996-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
DELETE := rm -f | |||||
CAT := cat | |||||
SEP := / | |||||
PLATFORM_DIR := $(TOP_DIR)/builds/ansi | |||||
PLATFORM := ansi | |||||
# This is used for `make refdoc' and `make refdoc-venv' | |||||
# | |||||
BIN := bin | |||||
# The directory where all library files are placed. | |||||
# | |||||
# By default, this is the same as $(OBJ_DIR); however, this can be changed | |||||
# to suit particular needs. | |||||
# | |||||
LIB_DIR := $(OBJ_DIR) | |||||
# The name of the final library file. Note that the DOS-specific Makefile | |||||
# uses a shorter (8.3) name. | |||||
# | |||||
LIBRARY := lib$(PROJECT) | |||||
# Path inclusion flag. Some compilers use a different flag than `-I' to | |||||
# specify an additional include path. Examples are `/i=' or `-J'. | |||||
# | |||||
I := -I | |||||
# C flag used to define a macro before the compilation of a given source | |||||
# object. Usually it is `-D' like in `-DDEBUG'. | |||||
# | |||||
D := -D | |||||
# The link flag used to specify a given library file on link. Note that | |||||
# this is only used to compile the demo programs, not the library itself. | |||||
# | |||||
L := -l | |||||
# Target flag. | |||||
# | |||||
T := -o$(space) | |||||
# C flags | |||||
# | |||||
# These should concern: debug output, optimization & warnings. | |||||
# | |||||
# Use the ANSIFLAGS variable to define the compiler flags used to enforce | |||||
# ANSI compliance. | |||||
# | |||||
CFLAGS ?= -c | |||||
# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. | |||||
# | |||||
ANSIFLAGS ?= | |||||
# EOF |
@ -0,0 +1,21 @@ | |||||
# | |||||
# FreeType 2 configuration rules for a `normal' pseudo ANSI compiler/system | |||||
# | |||||
# Copyright (C) 1996-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
include $(TOP_DIR)/builds/ansi/ansi-def.mk | |||||
include $(TOP_DIR)/builds/compiler/ansi-cc.mk | |||||
include $(TOP_DIR)/builds/link_std.mk | |||||
# EOF |
@ -0,0 +1,20 @@ | |||||
#if defined( GXVALID_H_ ) | |||||
#pragma warn -aus /* too many unevaluated variables in gxvalid */ | |||||
#endif | |||||
#ifndef ATARI_H | |||||
#define ATARI_H | |||||
#pragma warn -stu | |||||
/* PureC doesn't like 32bit enumerations */ | |||||
#ifndef FT_IMAGE_TAG | |||||
#define FT_IMAGE_TAG( value, _x1, _x2, _x3, _x4 ) value | |||||
#endif /* FT_IMAGE_TAG */ | |||||
#ifndef FT_ENC_TAG | |||||
#define FT_ENC_TAG( value, a, b, c, d ) value | |||||
#endif /* FT_ENC_TAG */ | |||||
#endif /* ATARI_H */ |
@ -0,0 +1,37 @@ | |||||
/* the following changes file names for PureC projects */ | |||||
if (argc > 0) | |||||
{ | |||||
ordner = argv[0]; | |||||
if (basename(ordner) == "") /* ist Ordner */ | |||||
{ | |||||
ChangeFilenames(ordner); | |||||
} | |||||
} | |||||
proc ChangeFilenames(folder) | |||||
local i,entries,directory,file; | |||||
{ | |||||
entries = filelist(directory,folder); | |||||
for (i = 0; i < entries; ++i) | |||||
{ | |||||
file = directory[i,0]; | |||||
if ((directory[i,3]&16) > 0) /* subdirectory */ | |||||
{ | |||||
ChangeFilenames(folder+file+"\\"); | |||||
} | |||||
else | |||||
{ | |||||
if ((stricmp(suffix(file),".h")==0)|(stricmp(suffix(file),".c")==0)) | |||||
ChangeFilename(folder,file); | |||||
} | |||||
} | |||||
} | |||||
proc ChangeFilename(path,datei) | |||||
local newfile,err; | |||||
{ | |||||
newfile=datei; | |||||
newfile[0]=(newfile[0] | 32) ^ 32; | |||||
err=files.rename("-q",path+datei,newfile); | |||||
} |
@ -0,0 +1,32 @@ | |||||
;FreeType project file | |||||
FREETYPE.LIB | |||||
.C [-K -P -R -A] | |||||
.L [-J -V] | |||||
.S | |||||
= | |||||
..\..\src\base\ftsystem.c | |||||
..\..\src\base\ftdebug.c | |||||
..\..\src\base\ftinit.c | |||||
..\..\src\base\ftglyph.c | |||||
..\..\src\base\ftmm | |||||
..\..\src\base\ftbbox | |||||
..\..\src\base\ftbase.c | |||||
..\..\src\autohint\autohint.c | |||||
;..\..\src\cache\ftcache.c | |||||
..\..\src\cff\cff.c | |||||
..\..\src\cid\type1cid.c | |||||
..\..\src\psaux\psaux.c | |||||
..\..\src\pshinter\pshinter.c | |||||
..\..\src\psnames\psnames.c | |||||
..\..\src\raster\raster.c | |||||
..\..\src\sfnt\sfnt.c | |||||
..\..\src\smooth\smooth.c | |||||
..\..\src\truetype\truetype.c | |||||
..\..\src\type1\type1.c | |||||
..\..\src\type42\type42.c |
@ -0,0 +1,51 @@ | |||||
Compiling FreeType 2 with PureC compiler | |||||
======================================== | |||||
[See below for a German version.] | |||||
To compile FreeType 2 as a library the following changes must be applied: | |||||
- All *.c files must start with an uppercase letter. | |||||
(In case GEMSCRIPT is available: | |||||
Simply drag the whole FreeType 2 directory to the file `FNames.SIC'.) | |||||
- You have to change the INCLUDE directory in PureC's compiler options | |||||
to contain both the `INCLUDE' and `freetype2\include' directory. | |||||
Example: | |||||
INCLUDE;E:\freetype2\include | |||||
- The file `freetype/include/Ft2build.h' must be patched as follows to | |||||
include ATARI.H: | |||||
#ifndef FT2_BUILD_GENERIC_H_ | |||||
#define FT2_BUILD_GENERIC_H_ | |||||
#include "ATARI.H" | |||||
Compilieren von FreeType 2 mit PureC | |||||
==================================== | |||||
Um FreeType 2 als eine Bibliothek (library) zu compilieren, muss folgendes | |||||
ge„ndert werden: | |||||
- Alle *.c-files m�ssen mit einem GROSSBUCHSTABEN beginnen. | |||||
(Falls GEMSCRIPT zur Verf�gung steht: | |||||
Den kompletten Ordner freetype2 auf die Datei `FNames.SIC' draggen.) | |||||
- In den Compiler-Optionen von PureC muss das INCLUDE directory auf INCLUDE | |||||
und freetype2\include verweisen. Z.B.: | |||||
INCLUDE;E:\freetype2\include | |||||
- In der Datei freetype/include/Ft2build.h muss zu Beginn | |||||
ein #include "ATARI.H" wie folgt eingef�gt werden: | |||||
#ifndef FT2_BUILD_GENERIC_H_ | |||||
#define FT2_BUILD_GENERIC_H_ | |||||
#include "ATARI.H" | |||||
--- end of README.TXT --- |
@ -0,0 +1,181 @@ | |||||
#!/usr/bin/env awk | |||||
function shift( array, \ | |||||
junk, elm0, l ) | |||||
{ | |||||
elm0 = array[0] | |||||
for ( l = 0; l < asorti( array, junk ) - 1; l++ ) | |||||
array[l] = array[l+1]; | |||||
delete array[l] | |||||
return elm0 | |||||
} | |||||
function init_cpp_src_line() | |||||
{ | |||||
logical_line = "" | |||||
delete break_pos | |||||
} | |||||
function shift_valid_bp( array, \ | |||||
junk, elm ) | |||||
{ | |||||
elm = -1 | |||||
if ( 0 < asorti( array, junk ) ) | |||||
do { | |||||
elm = shift( array ) | |||||
} while ( 0 > elm ); | |||||
return elm | |||||
} | |||||
function check_cpp_src_line_break_pos( \ | |||||
i, junk ) | |||||
{ | |||||
printf( "break_pos:" ) | |||||
for ( i = 0; i < asorti( break_pos, junk ); i++ ) | |||||
printf( " %d", break_pos[i] ); | |||||
printf( "\n" ) | |||||
} | |||||
function check_cpp_src_line() | |||||
{ | |||||
printf( "logical_line[%s]\n", logical_line ) | |||||
check_cpp_src_line_break_pos() | |||||
} | |||||
function append_line( phys_line, \ | |||||
filt_line, bp_len ) | |||||
{ | |||||
filt_line = phys_line | |||||
sub( /\\$/, " ", filt_line ) | |||||
logical_line = logical_line filt_line | |||||
bp_len = asorti( break_pos, junk ) | |||||
break_pos[bp_len] = length( logical_line ) - 1 | |||||
} | |||||
function print_line( \ | |||||
c0, c1, i, junk, part_str ) | |||||
{ | |||||
c0 = 0 | |||||
while( asorti( break_pos, junk ) > 1 ) | |||||
{ | |||||
if ( ( c1 = shift_valid_bp( break_pos ) ) < 1 ) | |||||
{ | |||||
part_str = substr( logical_line, c0 + 1 ) | |||||
printf( "%s\n", part_str ) | |||||
return | |||||
} | |||||
part_str = substr( logical_line, c0 + 1, c1 - c0 + 1 ) | |||||
gsub( / $/, "\\", part_str ) | |||||
printf( "%s\n", part_str ) | |||||
c0 = c1 + 1 | |||||
} | |||||
part_str = substr( logical_line, c0 + 1 ) | |||||
printf( "%s\n", part_str ) | |||||
} | |||||
function shrink_spaces( pos, \ | |||||
tail, removed_length, k ) | |||||
{ | |||||
tail = substr( logical_line, pos ) | |||||
sub( /^[ \t]+/, " ", tail ) | |||||
removed_length = length( logical_line ) - pos - length( tail ) + 1 | |||||
logical_line = substr( logical_line, 0, pos - 1 ) tail | |||||
for ( k = 0; k < asorti( break_pos, junk ); k++ ) | |||||
if ( ( pos + removed_length ) <= break_pos[k] ) | |||||
break_pos[k] = break_pos[k] - removed_length; | |||||
else if ( pos <= break_pos[k] ) | |||||
break_pos[k] = -1; | |||||
return removed_length | |||||
} | |||||
function shrink_spaces_to_linebreak( pos, \ | |||||
junk, part_str, removed_length, i ) | |||||
{ | |||||
for ( i = 0; i < asorti( break_pos, junk ) && break_pos[i] < pos ; i++ ) | |||||
; | |||||
if ( break_pos[i] < 1 ) | |||||
return; | |||||
part_str = substr( logical_line, pos, break_pos[i] - pos + 1 ) | |||||
sub( /^[ \t]+/, " ", part_str ) | |||||
removed_length = ( break_pos[i] - pos + 1 ) - length( part_str ) | |||||
tail = substr( logical_line, pos + removed_length ) | |||||
logical_line = substr( logical_line, 0, pos - 1 ) tail | |||||
for ( ; i < asorti( break_pos, junk ); i++ ) | |||||
break_pos[i] -= removed_length; | |||||
return removed_length | |||||
} | |||||
function delete_linebreaks_in_2nd_token( \ | |||||
tail, paren_depth, junk, i, j, k, l ) | |||||
{ | |||||
if ( logical_line ~ /^[ \t]*#[ \t]*define[ \t]+[0-9A-Za-z_]+\(/ ) | |||||
{ | |||||
tail = logical_line | |||||
sub( /^[ \t]*#[ \t]*define[ \t]+[0-9A-Za-z_]+/, "", tail ) | |||||
paren_depth = 0 | |||||
l = 0 | |||||
i = length( logical_line ) - length( tail ) + 1 # seek to the 1st op paren | |||||
j = i | |||||
do { | |||||
if ( substr( logical_line, j, 2 ) ~ /[ \t][ \t]/ ) | |||||
l = shrink_spaces( j ); | |||||
else if ( substr( logical_line, j, 1 ) == "(" ) | |||||
paren_depth += 1; | |||||
else if ( substr( logical_line, j, 1 ) == ")" ) | |||||
paren_depth -= 1; | |||||
j += 1 | |||||
} while ( j < length( logical_line ) && paren_depth != 0 ) | |||||
for ( k = 0; k < asorti( break_pos, junk ); k++ ) | |||||
if ( i <= break_pos[k] && break_pos[k] < j ) | |||||
break_pos[k] = -1; | |||||
if ( l > 0 ) | |||||
shrink_spaces_to_linebreak( j ); | |||||
} | |||||
} | |||||
BEGIN{ | |||||
init_cpp_src_line() | |||||
} | |||||
{ | |||||
append_line( $0 ) | |||||
if ( $0 !~ /\\$/ ) | |||||
{ | |||||
delete_linebreaks_in_2nd_token() | |||||
print_line() | |||||
init_cpp_src_line() | |||||
} | |||||
} | |||||
END{ | |||||
if ( 0 < length( logical_line ) ) | |||||
{ | |||||
delete_linebreaks_in_2nd_token() | |||||
print_line() | |||||
} | |||||
} |
@ -0,0 +1,40 @@ | |||||
#!/bin/sh | |||||
TOP_DIR=. | |||||
OBJ_DIR=. | |||||
for x in "$@" | |||||
do | |||||
case x"$x" in | |||||
x--srcdir=* | x--topdir=* ) | |||||
TOP_DIR=`echo $x | sed 's/^--[a-z]*dir=//'` | |||||
;; | |||||
x--builddir=* | x--objdir=* ) | |||||
OBJ_DIR=`echo $x | sed 's/^--[a-z]*dir=//'` | |||||
;; | |||||
esac | |||||
done | |||||
mkdir -p ${OBJ_DIR}/builds/atari/tmp/orig | |||||
( cd ${TOP_DIR} && find . -name '*.[CHch]' -type f | fgrep -v builds/atari/tmp | cpio -o ) | \ | |||||
( cd ${OBJ_DIR}/builds/atari/tmp/orig && cpio -idum ) | |||||
cp ${TOP_DIR}/builds/atari/deflinejoiner.awk ${OBJ_DIR}/builds/atari/tmp | |||||
pushd ${OBJ_DIR}/builds/atari/tmp | |||||
cp -pr orig purec | |||||
for f in `cd orig && find . -type f` | |||||
do | |||||
echo filter $f | |||||
env LANG=C awk -f deflinejoiner.awk < orig/$f > purec/$f | |||||
done | |||||
echo '#define FT2_BUILD_LIBRARY' > purec/include/ft2build.h | |||||
echo '#include "ATARI.H"' >> purec/include/ft2build.h | |||||
env LANG=C awk -f deflinejoiner.awk < orig/include/ft2build.h >> purec/include/ft2build.h | |||||
env LANG=C diff -ur orig purec > ../purec.diff | |||||
popd | |||||
rm -rf ${OBJ_DIR}/builds/atari/tmp |
@ -0,0 +1,79 @@ | |||||
# | |||||
# FreeType 2 configuration rules for a BeOS system | |||||
# | |||||
# this is similar to the "ansi-def.mk" file, except for BUILD and PLATFORM | |||||
# | |||||
# Copyright (C) 1996-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
DELETE := rm -f | |||||
CAT := cat | |||||
SEP := / | |||||
PLATFORM_DIR := $(TOP_DIR)/builds/beos | |||||
PLATFORM := beos | |||||
# This is used for `make refdoc' and `make refdoc-venv' | |||||
# | |||||
BIN := bin | |||||
# The directory where all library files are placed. | |||||
# | |||||
# By default, this is the same as $(OBJ_DIR); however, this can be changed | |||||
# to suit particular needs. | |||||
# | |||||
LIB_DIR := $(OBJ_DIR) | |||||
# The name of the final library file. Note that the DOS-specific Makefile | |||||
# uses a shorter (8.3) name. | |||||
# | |||||
LIBRARY := lib$(PROJECT) | |||||
# Path inclusion flag. Some compilers use a different flag than `-I' to | |||||
# specify an additional include path. Examples are `/i=' or `-J'. | |||||
# | |||||
I := -I | |||||
# C flag used to define a macro before the compilation of a given source | |||||
# object. Usually it is `-D' like in `-DDEBUG'. | |||||
# | |||||
D := -D | |||||
# The link flag used to specify a given library file on link. Note that | |||||
# this is only used to compile the demo programs, not the library itself. | |||||
# | |||||
L := -l | |||||
# Target flag. | |||||
# | |||||
T := -o$(space) | |||||
# C flags | |||||
# | |||||
# These should concern: debug output, optimization & warnings. | |||||
# | |||||
# Use the ANSIFLAGS variable to define the compiler flags used to enforce | |||||
# ANSI compliance. | |||||
# | |||||
CFLAGS ?= -c | |||||
# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. | |||||
# | |||||
ANSIFLAGS ?= | |||||
# EOF |
@ -0,0 +1,19 @@ | |||||
# | |||||
# FreeType 2 configuration rules for a BeOS system | |||||
# | |||||
# Copyright (C) 1996-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
include $(TOP_DIR)/builds/beos/beos-def.mk | |||||
include $(TOP_DIR)/builds/compiler/ansi-cc.mk | |||||
include $(TOP_DIR)/builds/link_std.mk | |||||
# EOF |
@ -0,0 +1,41 @@ | |||||
# | |||||
# FreeType 2 configuration file to detect an BeOS host platform. | |||||
# | |||||
# Copyright (C) 1996-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
.PHONY: setup | |||||
ifeq ($(PLATFORM),ansi) | |||||
ifdef BE_HOST_CPU | |||||
PLATFORM := beos | |||||
endif # test MACHTYPE beos | |||||
endif | |||||
ifeq ($(PLATFORM),beos) | |||||
DELETE := rm -f | |||||
CAT := cat | |||||
SEP := / | |||||
PLATFORM_DIR := $(TOP_DIR)/builds/beos | |||||
CONFIG_FILE := beos.mk | |||||
setup: std_setup | |||||
endif # test PLATFORM beos | |||||
# EOF |
@ -0,0 +1,52 @@ | |||||
# FindBrotliDec.cmake | |||||
# | |||||
# Copyright (C) 2019-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# Written by Werner Lemberg <wl@gnu.org> | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
# | |||||
# | |||||
# Try to find libbrotlidec include and library directories. | |||||
# | |||||
# If found, the following variables are set. | |||||
# | |||||
# BROTLIDEC_INCLUDE_DIRS | |||||
# BROTLIDEC_LIBRARIES | |||||
find_package(PkgConfig QUIET) | |||||
pkg_check_modules(PC_BROTLIDEC QUIET libbrotlidec) | |||||
if (PC_BROTLIDEC_VERSION) | |||||
set(BROTLIDEC_VERSION "${PC_BROTLIDEC_VERSION}") | |||||
endif () | |||||
find_path(BROTLIDEC_INCLUDE_DIRS | |||||
NAMES brotli/decode.h | |||||
HINTS ${PC_BROTLIDEC_INCLUDEDIR} | |||||
${PC_BROTLIDEC_INCLUDE_DIRS} | |||||
PATH_SUFFIXES brotli) | |||||
find_library(BROTLIDEC_LIBRARIES | |||||
NAMES brotlidec | |||||
HINTS ${PC_BROTLIDEC_LIBDIR} | |||||
${PC_BROTLIDEC_LIBRARY_DIRS}) | |||||
include(FindPackageHandleStandardArgs) | |||||
find_package_handle_standard_args( | |||||
BrotliDec | |||||
REQUIRED_VARS BROTLIDEC_INCLUDE_DIRS BROTLIDEC_LIBRARIES | |||||
FOUND_VAR BROTLIDEC_FOUND | |||||
VERSION_VAR BROTLIDEC_VERSION) | |||||
mark_as_advanced( | |||||
BROTLIDEC_INCLUDE_DIRS | |||||
BROTLIDEC_LIBRARIES) |
@ -0,0 +1,203 @@ | |||||
# Copyright (c) 2012, Intel Corporation | |||||
# Copyright (c) 2019 Sony Interactive Entertainment Inc. | |||||
# | |||||
# Redistribution and use in source and binary forms, with or without | |||||
# modification, are permitted provided that the following conditions are met: | |||||
# | |||||
# * Redistributions of source code must retain the above copyright notice, this | |||||
# list of conditions and the following disclaimer. | |||||
# * Redistributions in binary form must reproduce the above copyright notice, | |||||
# this list of conditions and the following disclaimer in the documentation | |||||
# and/or other materials provided with the distribution. | |||||
# * Neither the name of Intel Corporation nor the names of its contributors may | |||||
# be used to endorse or promote products derived from this software without | |||||
# specific prior written permission. | |||||
# | |||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | |||||
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |||||
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |||||
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE | |||||
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | |||||
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | |||||
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | |||||
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | |||||
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | |||||
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | |||||
# POSSIBILITY OF SUCH DAMAGE. | |||||
# | |||||
# Try to find Harfbuzz include and library directories. | |||||
# | |||||
# After successful discovery, this will set for inclusion where needed: | |||||
# HarfBuzz_INCLUDE_DIRS - containg the HarfBuzz headers | |||||
# HarfBuzz_LIBRARIES - containg the HarfBuzz library | |||||
#[=======================================================================[.rst: | |||||
FindHarfBuzz | |||||
-------------- | |||||
Find HarfBuzz headers and libraries. | |||||
Imported Targets | |||||
^^^^^^^^^^^^^^^^ | |||||
``HarfBuzz::HarfBuzz`` | |||||
The HarfBuzz library, if found. | |||||
``HarfBuzz::ICU`` | |||||
The HarfBuzz ICU library, if found. | |||||
Result Variables | |||||
^^^^^^^^^^^^^^^^ | |||||
This will define the following variables in your project: | |||||
``HarfBuzz_FOUND`` | |||||
true if (the requested version of) HarfBuzz is available. | |||||
``HarfBuzz_VERSION`` | |||||
the version of HarfBuzz. | |||||
``HarfBuzz_LIBRARIES`` | |||||
the libraries to link against to use HarfBuzz. | |||||
``HarfBuzz_INCLUDE_DIRS`` | |||||
where to find the HarfBuzz headers. | |||||
``HarfBuzz_COMPILE_OPTIONS`` | |||||
this should be passed to target_compile_options(), if the | |||||
target is not used for linking | |||||
#]=======================================================================] | |||||
find_package(PkgConfig QUIET) | |||||
pkg_check_modules(PC_HARFBUZZ QUIET harfbuzz) | |||||
set(HarfBuzz_COMPILE_OPTIONS ${PC_HARFBUZZ_CFLAGS_OTHER}) | |||||
set(HarfBuzz_VERSION ${PC_HARFBUZZ_CFLAGS_VERSION}) | |||||
find_path(HarfBuzz_INCLUDE_DIR | |||||
NAMES hb.h | |||||
HINTS ${PC_HARFBUZZ_INCLUDEDIR} ${PC_HARFBUZZ_INCLUDE_DIRS} | |||||
PATH_SUFFIXES harfbuzz | |||||
) | |||||
find_library(HarfBuzz_LIBRARY | |||||
NAMES ${HarfBuzz_NAMES} harfbuzz | |||||
HINTS ${PC_HARFBUZZ_LIBDIR} ${PC_HARFBUZZ_LIBRARY_DIRS} | |||||
) | |||||
if (HarfBuzz_INCLUDE_DIR AND NOT HarfBuzz_VERSION) | |||||
if (EXISTS "${HarfBuzz_INCLUDE_DIR}/hb-version.h") | |||||
file(READ "${HarfBuzz_INCLUDE_DIR}/hb-version.h" _harfbuzz_version_content) | |||||
string(REGEX MATCH "#define +HB_VERSION_STRING +\"([0-9]+\\.[0-9]+\\.[0-9]+)\"" _dummy "${_harfbuzz_version_content}") | |||||
set(HarfBuzz_VERSION "${CMAKE_MATCH_1}") | |||||
endif () | |||||
endif () | |||||
if ("${HarfBuzz_FIND_VERSION}" VERSION_GREATER "${HarfBuzz_VERSION}") | |||||
if (HarfBuzz_FIND_REQUIRED) | |||||
message(FATAL_ERROR | |||||
"Required version (" ${HarfBuzz_FIND_VERSION} ")" | |||||
" is higher than found version (" ${HarfBuzz_VERSION} ")") | |||||
else () | |||||
message(WARNING | |||||
"Required version (" ${HarfBuzz_FIND_VERSION} ")" | |||||
" is higher than found version (" ${HarfBuzz_VERSION} ")") | |||||
unset(HarfBuzz_VERSION) | |||||
unset(HarfBuzz_INCLUDE_DIRS) | |||||
unset(HarfBuzz_LIBRARIES) | |||||
return () | |||||
endif () | |||||
endif () | |||||
# Find components | |||||
if (HarfBuzz_INCLUDE_DIR AND HarfBuzz_LIBRARY) | |||||
set(_HarfBuzz_REQUIRED_LIBS_FOUND ON) | |||||
set(HarfBuzz_LIBS_FOUND "HarfBuzz (required): ${HarfBuzz_LIBRARY}") | |||||
else () | |||||
set(_HarfBuzz_REQUIRED_LIBS_FOUND OFF) | |||||
set(HarfBuzz_LIBS_NOT_FOUND "HarfBuzz (required)") | |||||
endif () | |||||
if (NOT CMAKE_VERSION VERSION_LESS 3.3) | |||||
if ("ICU" IN_LIST HarfBuzz_FIND_COMPONENTS) | |||||
pkg_check_modules(PC_HARFBUZZ_ICU QUIET harfbuzz-icu) | |||||
set(HarfBuzz_ICU_COMPILE_OPTIONS ${PC_HARFBUZZ_ICU_CFLAGS_OTHER}) | |||||
find_path(HarfBuzz_ICU_INCLUDE_DIR | |||||
NAMES hb-icu.h | |||||
HINTS ${PC_HARFBUZZ_ICU_INCLUDEDIR} ${PC_HARFBUZZ_ICU_INCLUDE_DIRS} | |||||
PATH_SUFFIXES harfbuzz | |||||
) | |||||
find_library(HarfBuzz_ICU_LIBRARY | |||||
NAMES ${HarfBuzz_ICU_NAMES} harfbuzz-icu | |||||
HINTS ${PC_HARFBUZZ_ICU_LIBDIR} ${PC_HARFBUZZ_ICU_LIBRARY_DIRS} | |||||
) | |||||
if (HarfBuzz_ICU_LIBRARY) | |||||
if (HarfBuzz_FIND_REQUIRED_ICU) | |||||
list(APPEND HarfBuzz_LIBS_FOUND "ICU (required): ${HarfBuzz_ICU_LIBRARY}") | |||||
else () | |||||
list(APPEND HarfBuzz_LIBS_FOUND "ICU (optional): ${HarfBuzz_ICU_LIBRARY}") | |||||
endif () | |||||
else () | |||||
if (HarfBuzz_FIND_REQUIRED_ICU) | |||||
set(_HarfBuzz_REQUIRED_LIBS_FOUND OFF) | |||||
list(APPEND HarfBuzz_LIBS_NOT_FOUND "ICU (required)") | |||||
else () | |||||
list(APPEND HarfBuzz_LIBS_NOT_FOUND "ICU (optional)") | |||||
endif () | |||||
endif () | |||||
endif () | |||||
endif () | |||||
if (NOT HarfBuzz_FIND_QUIETLY) | |||||
if (HarfBuzz_LIBS_FOUND) | |||||
message(STATUS "Found the following HarfBuzz libraries:") | |||||
foreach (found ${HarfBuzz_LIBS_FOUND}) | |||||
message(STATUS " ${found}") | |||||
endforeach () | |||||
endif () | |||||
if (HarfBuzz_LIBS_NOT_FOUND) | |||||
message(STATUS "The following HarfBuzz libraries were not found:") | |||||
foreach (found ${HarfBuzz_LIBS_NOT_FOUND}) | |||||
message(STATUS " ${found}") | |||||
endforeach () | |||||
endif () | |||||
endif () | |||||
include(FindPackageHandleStandardArgs) | |||||
find_package_handle_standard_args(HarfBuzz | |||||
FOUND_VAR HarfBuzz_FOUND | |||||
REQUIRED_VARS HarfBuzz_INCLUDE_DIR HarfBuzz_LIBRARY _HarfBuzz_REQUIRED_LIBS_FOUND | |||||
VERSION_VAR HarfBuzz_VERSION | |||||
) | |||||
if (NOT CMAKE_VERSION VERSION_LESS 3.1) | |||||
if (HarfBuzz_LIBRARY AND NOT TARGET HarfBuzz::HarfBuzz) | |||||
add_library(HarfBuzz::HarfBuzz UNKNOWN IMPORTED GLOBAL) | |||||
set_target_properties(HarfBuzz::HarfBuzz PROPERTIES | |||||
IMPORTED_LOCATION "${HarfBuzz_LIBRARY}" | |||||
INTERFACE_COMPILE_OPTIONS "${HarfBuzz_COMPILE_OPTIONS}" | |||||
INTERFACE_INCLUDE_DIRECTORIES "${HarfBuzz_INCLUDE_DIR}" | |||||
) | |||||
endif () | |||||
if (HarfBuzz_ICU_LIBRARY AND NOT TARGET HarfBuzz::ICU) | |||||
add_library(HarfBuzz::ICU UNKNOWN IMPORTED GLOBAL) | |||||
set_target_properties(HarfBuzz::ICU PROPERTIES | |||||
IMPORTED_LOCATION "${HarfBuzz_ICU_LIBRARY}" | |||||
INTERFACE_COMPILE_OPTIONS "${HarfBuzz_ICU_COMPILE_OPTIONS}" | |||||
INTERFACE_INCLUDE_DIRECTORIES "${HarfBuzz_ICU_INCLUDE_DIR}" | |||||
) | |||||
endif () | |||||
endif () | |||||
mark_as_advanced( | |||||
HarfBuzz_INCLUDE_DIR | |||||
HarfBuzz_ICU_INCLUDE_DIR | |||||
HarfBuzz_LIBRARY | |||||
HarfBuzz_ICU_LIBRARY | |||||
) | |||||
if (HarfBuzz_FOUND) | |||||
set(HarfBuzz_LIBRARIES ${HarfBuzz_LIBRARY} ${HarfBuzz_ICU_LIBRARY}) | |||||
set(HarfBuzz_INCLUDE_DIRS ${HarfBuzz_INCLUDE_DIR} ${HarfBuzz_ICU_INCLUDE_DIR}) | |||||
endif () |
@ -0,0 +1,270 @@ | |||||
# iOS.cmake | |||||
# | |||||
# Copyright (C) 2014-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# Written by David Wimsey <david@wimsey.us> | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
# | |||||
# | |||||
# This file is derived from the files `Platform/Darwin.cmake' and | |||||
# `Platform/UnixPaths.cmake', which are part of CMake 2.8.4. It has been | |||||
# altered for iOS development. | |||||
# Options | |||||
# ------- | |||||
# | |||||
# IOS_PLATFORM = OS | SIMULATOR | |||||
# | |||||
# This decides whether SDKS are selected from the `iPhoneOS.platform' or | |||||
# `iPhoneSimulator.platform' folders. | |||||
# | |||||
# OS - the default, used to build for iPhone and iPad physical devices, | |||||
# which have an ARM architecture. | |||||
# SIMULATOR - used to build for the Simulator platforms, which have an | |||||
# x86 architecture. | |||||
# | |||||
# CMAKE_IOS_DEVELOPER_ROOT = /path/to/platform/Developer folder | |||||
# | |||||
# By default, this location is automatically chosen based on the | |||||
# IOS_PLATFORM value above. If you manually set this variable, it | |||||
# overrides the default location and forces the use of a particular | |||||
# Developer Platform. | |||||
# | |||||
# CMAKE_IOS_SDK_ROOT = /path/to/platform/Developer/SDKs/SDK folder | |||||
# | |||||
# By default, this location is automatically chosen based on the | |||||
# CMAKE_IOS_DEVELOPER_ROOT value. In this case it is always the most | |||||
# up-to-date SDK found in the CMAKE_IOS_DEVELOPER_ROOT path. If you | |||||
# manually set this variable, it forces the use of a specific SDK | |||||
# version. | |||||
# | |||||
# | |||||
# Macros | |||||
# ------ | |||||
# | |||||
# set_xcode_property (TARGET XCODE_PROPERTY XCODE_VALUE) | |||||
# | |||||
# A convenience macro for setting Xcode specific properties on targets. | |||||
# | |||||
# Example: | |||||
# | |||||
# set_xcode_property(myioslib IPHONEOS_DEPLOYMENT_TARGET "3.1") | |||||
# | |||||
# find_host_package (PROGRAM ARGS) | |||||
# | |||||
# A macro to find executable programs on the host system, not within the | |||||
# iOS environment. Thanks to the `android-cmake' project for providing | |||||
# the command. | |||||
# standard settings | |||||
set(CMAKE_SYSTEM_NAME Darwin) | |||||
set(CMAKE_SYSTEM_VERSION 1) | |||||
set(UNIX True) | |||||
set(APPLE True) | |||||
set(IOS True) | |||||
# required as of cmake 2.8.10 | |||||
set(CMAKE_OSX_DEPLOYMENT_TARGET "" | |||||
CACHE STRING "Force unset of the deployment target for iOS" FORCE | |||||
) | |||||
# determine the cmake host system version so we know where to find the iOS | |||||
# SDKs | |||||
find_program(CMAKE_UNAME uname /bin /usr/bin /usr/local/bin) | |||||
if (CMAKE_UNAME) | |||||
exec_program(uname ARGS -r OUTPUT_VARIABLE CMAKE_HOST_SYSTEM_VERSION) | |||||
string(REGEX REPLACE "^([0-9]+)\\.([0-9]+).*$" "\\1" | |||||
DARWIN_MAJOR_VERSION "${CMAKE_HOST_SYSTEM_VERSION}") | |||||
endif (CMAKE_UNAME) | |||||
# skip the platform compiler checks for cross compiling | |||||
set(CMAKE_CXX_COMPILER_WORKS TRUE) | |||||
set(CMAKE_C_COMPILER_WORKS TRUE) | |||||
# all iOS/Darwin specific settings - some may be redundant | |||||
set(CMAKE_SHARED_LIBRARY_PREFIX "lib") | |||||
set(CMAKE_SHARED_LIBRARY_SUFFIX ".dylib") | |||||
set(CMAKE_SHARED_MODULE_PREFIX "lib") | |||||
set(CMAKE_SHARED_MODULE_SUFFIX ".so") | |||||
set(CMAKE_MODULE_EXISTS 1) | |||||
set(CMAKE_DL_LIBS "") | |||||
set(CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG | |||||
"-compatibility_version ") | |||||
set(CMAKE_C_OSX_CURRENT_VERSION_FLAG | |||||
"-current_version ") | |||||
set(CMAKE_CXX_OSX_COMPATIBILITY_VERSION_FLAG | |||||
"${CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG}") | |||||
set(CMAKE_CXX_OSX_CURRENT_VERSION_FLAG | |||||
"${CMAKE_C_OSX_CURRENT_VERSION_FLAG}") | |||||
# hidden visibility is required for cxx on iOS | |||||
set(CMAKE_C_FLAGS_INIT "") | |||||
set(CMAKE_CXX_FLAGS_INIT | |||||
"-headerpad_max_install_names -fvisibility=hidden -fvisibility-inlines-hidden") | |||||
set(CMAKE_C_LINK_FLAGS | |||||
"-Wl,-search_paths_first ${CMAKE_C_LINK_FLAGS}") | |||||
set(CMAKE_CXX_LINK_FLAGS | |||||
"-Wl,-search_paths_first ${CMAKE_CXX_LINK_FLAGS}") | |||||
set(CMAKE_PLATFORM_HAS_INSTALLNAME 1) | |||||
set(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS | |||||
"-dynamiclib -headerpad_max_install_names") | |||||
set(CMAKE_SHARED_MODULE_CREATE_C_FLAGS | |||||
"-bundle -headerpad_max_install_names") | |||||
set(CMAKE_SHARED_MODULE_LOADER_C_FLAG | |||||
"-Wl,-bundle_loader,") | |||||
set(CMAKE_SHARED_MODULE_LOADER_CXX_FLAG | |||||
"-Wl,-bundle_loader,") | |||||
set(CMAKE_FIND_LIBRARY_SUFFIXES | |||||
".dylib" ".so" ".a") | |||||
# hack: If a new cmake (which uses CMAKE_INSTALL_NAME_TOOL) runs on an old | |||||
# build tree (where `install_name_tool' was hardcoded), and where | |||||
# CMAKE_INSTALL_NAME_TOOL isn't in the cache and still cmake didn't | |||||
# fail in `CMakeFindBinUtils.cmake' (because it isn't rerun), hardcode | |||||
# CMAKE_INSTALL_NAME_TOOL here to `install_name_tool' so it behaves as | |||||
# it did before. | |||||
if (NOT DEFINED CMAKE_INSTALL_NAME_TOOL) | |||||
find_program(CMAKE_INSTALL_NAME_TOOL install_name_tool) | |||||
endif (NOT DEFINED CMAKE_INSTALL_NAME_TOOL) | |||||
# set up iOS platform unless specified manually with IOS_PLATFORM | |||||
if (NOT DEFINED IOS_PLATFORM) | |||||
set(IOS_PLATFORM "OS") | |||||
endif (NOT DEFINED IOS_PLATFORM) | |||||
set(IOS_PLATFORM ${IOS_PLATFORM} CACHE STRING "Type of iOS Platform") | |||||
# check the platform selection and setup for developer root | |||||
if (${IOS_PLATFORM} STREQUAL "OS") | |||||
set(IOS_PLATFORM_LOCATION "iPhoneOS.platform") | |||||
# this causes the installers to properly locate the output libraries | |||||
set(CMAKE_XCODE_EFFECTIVE_PLATFORMS "-iphoneos") | |||||
elseif (${IOS_PLATFORM} STREQUAL "SIMULATOR") | |||||
set(IOS_PLATFORM_LOCATION "iPhoneSimulator.platform") | |||||
# this causes the installers to properly locate the output libraries | |||||
set(CMAKE_XCODE_EFFECTIVE_PLATFORMS "-iphonesimulator") | |||||
else (${IOS_PLATFORM} STREQUAL "OS") | |||||
message(FATAL_ERROR | |||||
"Unsupported IOS_PLATFORM value selected. Please choose OS or SIMULATOR.") | |||||
endif (${IOS_PLATFORM} STREQUAL "OS") | |||||
# set up iOS developer location unless specified manually with | |||||
# CMAKE_IOS_DEVELOPER_ROOT -- | |||||
# note that Xcode 4.3 changed the installation location; choose the most | |||||
# recent one available | |||||
set(XCODE_POST_43_ROOT | |||||
"/Applications/Xcode.app/Contents/Developer/Platforms/${IOS_PLATFORM_LOCATION}/Developer") | |||||
set(XCODE_PRE_43_ROOT | |||||
"/Developer/Platforms/${IOS_PLATFORM_LOCATION}/Developer") | |||||
if (NOT DEFINED CMAKE_IOS_DEVELOPER_ROOT) | |||||
if (EXISTS ${XCODE_POST_43_ROOT}) | |||||
set(CMAKE_IOS_DEVELOPER_ROOT ${XCODE_POST_43_ROOT}) | |||||
elseif (EXISTS ${XCODE_PRE_43_ROOT}) | |||||
set(CMAKE_IOS_DEVELOPER_ROOT ${XCODE_PRE_43_ROOT}) | |||||
endif (EXISTS ${XCODE_POST_43_ROOT}) | |||||
endif (NOT DEFINED CMAKE_IOS_DEVELOPER_ROOT) | |||||
set(CMAKE_IOS_DEVELOPER_ROOT ${CMAKE_IOS_DEVELOPER_ROOT} | |||||
CACHE PATH "Location of iOS Platform" | |||||
) | |||||
# find and use the most recent iOS SDK unless specified manually with | |||||
# CMAKE_IOS_SDK_ROOT | |||||
if (NOT DEFINED CMAKE_IOS_SDK_ROOT) | |||||
file(GLOB _CMAKE_IOS_SDKS "${CMAKE_IOS_DEVELOPER_ROOT}/SDKs/*") | |||||
if (_CMAKE_IOS_SDKS) | |||||
list(SORT _CMAKE_IOS_SDKS) | |||||
list(REVERSE _CMAKE_IOS_SDKS) | |||||
list(GET _CMAKE_IOS_SDKS 0 CMAKE_IOS_SDK_ROOT) | |||||
else (_CMAKE_IOS_SDKS) | |||||
message(FATAL_ERROR | |||||
"No iOS SDK's found in default search path ${CMAKE_IOS_DEVELOPER_ROOT}. Manually set CMAKE_IOS_SDK_ROOT or install the iOS SDK.") | |||||
endif (_CMAKE_IOS_SDKS) | |||||
message(STATUS "Toolchain using default iOS SDK: ${CMAKE_IOS_SDK_ROOT}") | |||||
endif (NOT DEFINED CMAKE_IOS_SDK_ROOT) | |||||
set(CMAKE_IOS_SDK_ROOT ${CMAKE_IOS_SDK_ROOT} | |||||
CACHE PATH "Location of the selected iOS SDK" | |||||
) | |||||
# set the sysroot default to the most recent SDK | |||||
set(CMAKE_OSX_SYSROOT ${CMAKE_IOS_SDK_ROOT} | |||||
CACHE PATH "Sysroot used for iOS support" | |||||
) | |||||
# set the architecture for iOS -- | |||||
# note that currently both ARCHS_STANDARD_32_BIT and | |||||
# ARCHS_UNIVERSAL_IPHONE_OS set armv7 only, so set both manually | |||||
if (${IOS_PLATFORM} STREQUAL "OS") | |||||
set(IOS_ARCH $(ARCHS_STANDARD_32_64_BIT)) | |||||
else (${IOS_PLATFORM} STREQUAL "OS") | |||||
set(IOS_ARCH i386) | |||||
endif (${IOS_PLATFORM} STREQUAL "OS") | |||||
set(CMAKE_OSX_ARCHITECTURES ${IOS_ARCH} | |||||
CACHE string "Build architecture for iOS" | |||||
) | |||||
# set the find root to the iOS developer roots and to user defined paths | |||||
set(CMAKE_FIND_ROOT_PATH | |||||
${CMAKE_IOS_DEVELOPER_ROOT} | |||||
${CMAKE_IOS_SDK_ROOT} | |||||
${CMAKE_PREFIX_PATH} | |||||
CACHE string "iOS find search path root" | |||||
) | |||||
# default to searching for frameworks first | |||||
set(CMAKE_FIND_FRAMEWORK FIRST) | |||||
# set up the default search directories for frameworks | |||||
set(CMAKE_SYSTEM_FRAMEWORK_PATH | |||||
${CMAKE_IOS_SDK_ROOT}/System/Library/Frameworks | |||||
${CMAKE_IOS_SDK_ROOT}/System/Library/PrivateFrameworks | |||||
${CMAKE_IOS_SDK_ROOT}/Developer/Library/Frameworks | |||||
) | |||||
# only search the iOS SDKs, not the remainder of the host filesystem | |||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY) | |||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) | |||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) | |||||
# this little macro lets you set any Xcode specific property | |||||
macro(set_xcode_property TARGET XCODE_PROPERTY XCODE_VALUE) | |||||
set_property(TARGET ${TARGET} | |||||
PROPERTY XCODE_ATTRIBUTE_${XCODE_PROPERTY} ${XCODE_VALUE}) | |||||
endmacro(set_xcode_property) | |||||
# this macro lets you find executable programs on the host system | |||||
macro(find_host_package) | |||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) | |||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY NEVER) | |||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE NEVER) | |||||
set(IOS FALSE) | |||||
find_package(${ARGN}) | |||||
set(IOS TRUE) | |||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY) | |||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) | |||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) | |||||
endmacro(find_host_package) | |||||
# eof |
@ -0,0 +1,157 @@ | |||||
#!/bin/sh -e | |||||
# Copyright (C) 2015-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
# This script tests the CMake build. Simply run | |||||
# | |||||
# builds/cmake/testbuild.sh | |||||
# | |||||
# or | |||||
# | |||||
# BUILD_SHARED_LIBS=1 builds/cmake/testbuild.sh | |||||
# | |||||
# The script: | |||||
# | |||||
# - builds the main CMakeLists.txt | |||||
# - builds and runs a small test app in a separate build tree so | |||||
# the config-module is tested, too | |||||
# | |||||
# Options (environment variables): | |||||
# | |||||
# - The variable BUILD_SHARED_LIBS will be forwarded to the CMake project | |||||
# that builds the library. | |||||
# | |||||
# prepare temporary dir | |||||
cd `dirname $0`/../.. | |||||
ftdir=`pwd` | |||||
tmpdir=/tmp/freetype-cmake-testbuild | |||||
rm -rf $tmpdir | |||||
mkdir -p $tmpdir | |||||
# build and install freetype | |||||
if test -n "$BUILD_SHARED_LIBS"; then | |||||
bsl=-DBUILD_SHARED_LIBS=$BUILD_SHARED_LIBS | |||||
else | |||||
bsl=-UBUILD_SHARED_LIBS | |||||
fi | |||||
build_opts="-DWITH_ZLIB=0 \ | |||||
-DWITH_BZip2=0 \ | |||||
-DWITH_PNG=0 \ | |||||
-DWITH_HarfBuzz=0 \ | |||||
$bsl \ | |||||
-DCMAKE_INSTALL_PREFIX=$tmpdir/out" | |||||
(set -x; cmake -H$ftdir \ | |||||
-B$tmpdir/ftb \ | |||||
-DCMAKE_BUILD_TYPE=Debug \ | |||||
$build_opts) | |||||
(set -x; cmake --build $tmpdir/ftb \ | |||||
--config Debug \ | |||||
--target install) | |||||
(set -x; cmake $tmpdir/ftb \ | |||||
-DCMAKE_BUILD_TYPE=Release) | |||||
(set -x; cmake --build $tmpdir/ftb \ | |||||
--config Release \ | |||||
--target install \ | |||||
--clean-first) | |||||
# create test project CMakeLists.txt | |||||
cat >$tmpdir/CMakeLists.txt << END | |||||
cmake_minimum_required(VERSION 2.6) | |||||
project(freetype-cmake-testbuild) | |||||
find_package(Freetype REQUIRED CONFIG) | |||||
add_executable(freetype-cmake-test main.c) | |||||
target_link_libraries(freetype-cmake-test freetype) | |||||
enable_testing() | |||||
add_test(freetype-cmake-test freetype-cmake-test) | |||||
END | |||||
# create test project main.c | |||||
cat >$tmpdir/main.c << END | |||||
#include <stdio.h> | |||||
#include <stdlib.h> | |||||
#include <ft2build.h> | |||||
#include <freetype/freetype.h> | |||||
FT_Library library; | |||||
int main(int argc, | |||||
char*argv[]) | |||||
{ | |||||
FT_Error error; | |||||
FT_Int major = 0; | |||||
FT_Int minor = 0; | |||||
FT_Int patch = 0; | |||||
error = FT_Init_FreeType(&library); | |||||
if (error) | |||||
return EXIT_FAILURE; | |||||
FT_Library_Version(library, &major, &minor, &patch); | |||||
if (major != FREETYPE_MAJOR | |||||
|| minor != FREETYPE_MINOR | |||||
|| patch != FREETYPE_PATCH) | |||||
return EXIT_FAILURE; | |||||
printf("FT_Library_Version: %d.%d.%d\n", major, minor, patch); | |||||
error = FT_Done_FreeType(library); | |||||
if (error) | |||||
return EXIT_FAILURE; | |||||
return EXIT_SUCCESS; | |||||
} | |||||
END | |||||
# build and test | |||||
mkdir -p $tmpdir/tb | |||||
cd $tmpdir/tb | |||||
LD_LIBRARY_PATH=$tmpdir/out/lib:$LD_LIBRARY_PATH | |||||
DYLD_LIBRARY_PATH=$tmpdir/out/lib:$DYLD_LIBRARY_PATH | |||||
export LD_LIBRARY_PATH | |||||
export DYLD_LIBRARY_PATH | |||||
(set -x; cmake $tmpdir \ | |||||
-DCMAKE_BUILD_TYPE=Debug \ | |||||
-DCMAKE_PREFIX_PATH=$tmpdir/out) | |||||
(set -x; cmake --build . \ | |||||
--config Debug) | |||||
(set -x; ctest -V -C Debug) | |||||
(set -x; cmake . \ | |||||
-DCMAKE_BUILD_TYPE=Release) | |||||
(set -x; cmake --build . \ | |||||
--config Release \ | |||||
--clean-first) | |||||
(set -x; ctest -V -C Release) | |||||
rm -rf $tmpdir | |||||
# EOF |
@ -0,0 +1,80 @@ | |||||
# | |||||
# FreeType 2 generic pseudo ANSI compiler | |||||
# | |||||
# Copyright (C) 1996-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
# Compiler command line name | |||||
# | |||||
CC := cc | |||||
COMPILER_SEP := $(SEP) | |||||
# The object file extension (for standard and static libraries). This can be | |||||
# .o, .tco, .obj, etc., depending on the platform. | |||||
# | |||||
O := o | |||||
SO := o | |||||
# The library file extension (for standard and static libraries). This can | |||||
# be .a, .lib, etc., depending on the platform. | |||||
# | |||||
A := a | |||||
SA := a | |||||
# Path inclusion flag. Some compilers use a different flag than `-I' to | |||||
# specify an additional include path. Examples are `/i=' or `-J'. | |||||
# | |||||
I := -I | |||||
# C flag used to define a macro before the compilation of a given source | |||||
# object. Usually it is `-D' like in `-DDEBUG'. | |||||
# | |||||
D := -D | |||||
# The link flag used to specify a given library file on link. Note that | |||||
# this is only used to compile the demo programs, not the library itself. | |||||
# | |||||
L := -l | |||||
# Target flag. | |||||
# | |||||
T := -o$(space) | |||||
# C flags | |||||
# | |||||
# These should concern: debug output, optimization & warnings. | |||||
# | |||||
# Use the ANSIFLAGS variable to define the compiler flags used to enforce | |||||
# ANSI compliance. | |||||
# | |||||
CFLAGS ?= -c | |||||
# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. | |||||
# | |||||
# we assume the compiler is already strictly ANSI | |||||
# | |||||
ANSIFLAGS ?= | |||||
# Library linking | |||||
# | |||||
CLEAN_LIBRARY ?= $(DELETE) $(subst /,$(SEP),$(PROJECT_LIBRARY)) | |||||
LINK_LIBRARY = $(AR) -r $@ $(subst /,$(COMPILER_SEP),$(OBJECTS_LIST)) | |||||
# EOF |
@ -0,0 +1,86 @@ | |||||
# | |||||
# FreeType 2 Borland C++-specific with NO OPTIMIZATIONS + DEBUGGING | |||||
# | |||||
# Copyright (C) 1996-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
# Compiler command line name | |||||
# | |||||
CC := bcc32 | |||||
COMPILER_SEP := $(SEP) | |||||
# The object file extension (for standard and static libraries). This can be | |||||
# .o, .tco, .obj, etc., depending on the platform. | |||||
# | |||||
O := obj | |||||
SO := obj | |||||
# The library file extension (for standard and static libraries). This can | |||||
# be .a, .lib, etc., depending on the platform. | |||||
# | |||||
A := lib | |||||
SA := lib | |||||
# Path inclusion flag. Some compilers use a different flag than `-I' to | |||||
# specify an additional include path. Examples are `/i=' or `-J'. | |||||
# | |||||
I := -I | |||||
# C flag used to define a macro before the compilation of a given source | |||||
# object. Usually it is `-D' like in `-DDEBUG'. | |||||
# | |||||
D := -D | |||||
# The link flag used to specify a given library file on link. Note that | |||||
# this is only used to compile the demo programs, not the library itself. | |||||
# | |||||
L := | |||||
# Target flag -- no trailing space. | |||||
# | |||||
T := -o | |||||
TE := -e | |||||
# C flags | |||||
# | |||||
# These should concern: debug output, optimization & warnings. | |||||
# | |||||
# Use the ANSIFLAGS variable to define the compiler flags used to enforce | |||||
# ANSI compliance. | |||||
# | |||||
CFLAGS ?= -q -c -y -d -v -Od -w-par -w-ccc -w-rch -w-pro -w-aus | |||||
# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. | |||||
# | |||||
ANSIFLAGS ?= -A | |||||
# Library linking | |||||
# | |||||
CLEAN_LIBRARY ?= $(DELETE) $(subst /,$(SEP),$(PROJECT_LIBRARY)) | |||||
LINK_LIBRARY = tlib /u /P128 $(subst /,$(COMPILER_SEP),$@ $(OBJECTS_LIST:%=+%)) | |||||
# Borland C++ specific temporary files | |||||
# | |||||
CLEAN += \ | |||||
$(subst /,$(SEP),$(TOP_DIR)/apinames.$(O)) \ | |||||
$(subst /,$(SEP),$(OBJ_DIR)/apinames.tds) | |||||
# EOF |
@ -0,0 +1,86 @@ | |||||
# | |||||
# FreeType 2 Borland C++-specific rules | |||||
# | |||||
# Copyright (C) 1996-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
# Compiler command line name | |||||
# | |||||
CC := bcc32 | |||||
COMPILER_SEP := $(SEP) | |||||
# The object file extension (for standard and static libraries). This can be | |||||
# .o, .tco, .obj, etc., depending on the platform. | |||||
# | |||||
O := obj | |||||
SO := obj | |||||
# The library file extension (for standard and static libraries). This can | |||||
# be .a, .lib, etc., depending on the platform. | |||||
# | |||||
A := lib | |||||
SA := lib | |||||
# Path inclusion flag. Some compilers use a different flag than `-I' to | |||||
# specify an additional include path. Examples are `/i=' or `-J'. | |||||
# | |||||
I := -I | |||||
# C flag used to define a macro before the compilation of a given source | |||||
# object. Usually it is `-D' like in `-DDEBUG'. | |||||
# | |||||
D := -D | |||||
# The link flag used to specify a given library file on link. Note that | |||||
# this is only used to compile the demo programs, not the library itself. | |||||
# | |||||
L := | |||||
# Target flag -- no trailing space. | |||||
# | |||||
T := -o | |||||
TE := -e | |||||
# C flags | |||||
# | |||||
# These should concern: debug output, optimization & warnings. | |||||
# | |||||
# Use the ANSIFLAGS variable to define the compiler flags used to enforce | |||||
# ANSI compliance. | |||||
# | |||||
CFLAGS ?= -c -q -y -d -v -Od -w-par -w-ccc -w-rch -w-pro -w-aus | |||||
# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. | |||||
# | |||||
ANSIFLAGS ?= -A | |||||
# Library linking | |||||
# | |||||
CLEAN_LIBRARY ?= $(DELETE) $(subst /,$(SEP),$(PROJECT_LIBRARY)) | |||||
LINK_LIBRARY = tlib /u /P128 $(subst /,$(COMPILER_SEP),$@ $(OBJECTS_LIST:%=+%)) | |||||
# Borland C++ specific temporary files | |||||
# | |||||
CLEAN += \ | |||||
$(subst /,$(SEP),$(TOP_DIR)/apinames.$(O)) \ | |||||
$(subst /,$(SEP),$(OBJ_DIR)/apinames.tds) | |||||
# EOF |
@ -0,0 +1,77 @@ | |||||
# | |||||
# FreeType 2 emx-specific definitions | |||||
# | |||||
# Copyright (C) 2003-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
# Compiler command line name | |||||
# | |||||
CC := set GCCOPT="-ansi -pedantic"; gcc | |||||
COMPILER_SEP := / | |||||
# The object file extension (for standard and static libraries). This can be | |||||
# .o, .tco, .obj, etc., depending on the platform. | |||||
# | |||||
O := o | |||||
SO := o | |||||
# The library file extension (for standard and static libraries). This can | |||||
# be .a, .lib, etc., depending on the platform. | |||||
# | |||||
A := a | |||||
SA := a | |||||
# Path inclusion flag. Some compilers use a different flag than `-I' to | |||||
# specify an additional include path. Examples are `/i=' or `-J'. | |||||
# | |||||
I := -I | |||||
# C flag used to define a macro before the compilation of a given source | |||||
# object. Usually it is `-D' like in `-DDEBUG'. | |||||
# | |||||
D := -D | |||||
# The link flag used to specify a given library file on link. Note that | |||||
# this is only used to compile the demo programs, not the library itself. | |||||
# | |||||
L := -l | |||||
# Target flag. | |||||
# | |||||
T := -o$(space) | |||||
# C flags | |||||
# | |||||
# These should concern: debug output, optimization & warnings. | |||||
# | |||||
# Use the ANSIFLAGS variable to define the compiler flags used to enforce | |||||
# ANSI compliance. | |||||
# | |||||
CFLAGS ?= -c -g -O6 -Wall | |||||
# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. | |||||
# | |||||
ANSIFLAGS ?= | |||||
# Library linking | |||||
# | |||||
CLEAN_LIBRARY ?= $(DELETE) $(subst /,$(SEP),$(PROJECT_LIBRARY)) | |||||
LINK_LIBRARY = $(foreach m,$(OBJECTS_LIST),$(AR) -r $@ $(m);) echo > nul | |||||
# EOF |
@ -0,0 +1,96 @@ | |||||
# | |||||
# FreeType 2 gcc-specific with NO OPTIMIZATIONS + DEBUGGING | |||||
# | |||||
# Copyright (C) 1996-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
# Compiler command line name | |||||
# | |||||
CC := gcc | |||||
COMPILER_SEP := / | |||||
# The object file extension (for standard and static libraries). This can be | |||||
# .o, .tco, .obj, etc., depending on the platform. | |||||
# | |||||
O := o | |||||
SO := o | |||||
# The library file extension (for standard and static libraries). This can | |||||
# be .a, .lib, etc., depending on the platform. | |||||
# | |||||
A := a | |||||
SA := a | |||||
# Path inclusion flag. Some compilers use a different flag than `-I' to | |||||
# specify an additional include path. Examples are `/i=' or `-J'. | |||||
# | |||||
I := -I | |||||
# C flag used to define a macro before the compilation of a given source | |||||
# object. Usually it is `-D' like in `-DDEBUG'. | |||||
# | |||||
D := -D | |||||
# The link flag used to specify a given library file on link. Note that | |||||
# this is only used to compile the demo programs, not the library itself. | |||||
# | |||||
L := -l | |||||
# Target flag. | |||||
# | |||||
T := -o$(space) | |||||
# C flags | |||||
# | |||||
# These should concern: debug output, optimization & warnings. | |||||
# | |||||
# Use the ANSIFLAGS variable to define the compiler flags used to enforce | |||||
# ANSI compliance. | |||||
# | |||||
ifndef CFLAGS | |||||
ifeq ($(findstring g++,$(CC)),) | |||||
nested_externs := -Wnested-externs | |||||
strict_prototypes := -Wstrict-prototypes | |||||
endif | |||||
CFLAGS := -c -g -O0 \ | |||||
-Wall \ | |||||
-W \ | |||||
-Wundef \ | |||||
-Wshadow \ | |||||
-Wpointer-arith \ | |||||
-Wwrite-strings \ | |||||
-Wredundant-decls \ | |||||
-Wno-long-long \ | |||||
$(nested_externs) \ | |||||
$(strict_prototypes) | |||||
endif | |||||
# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. | |||||
# You can override this on the command line. | |||||
# | |||||
ANSIFLAGS ?= -std=c99 -pedantic | |||||
# Library linking | |||||
# | |||||
CLEAN_LIBRARY ?= $(DELETE) $(subst /,$(SEP),$(PROJECT_LIBRARY)) | |||||
LINK_LIBRARY = $(AR) -r $@ $(OBJECTS_LIST) | |||||
# EOF |
@ -0,0 +1,77 @@ | |||||
# | |||||
# FreeType 2 gcc-specific definitions | |||||
# | |||||
# Copyright (C) 1996-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
# Compiler command line name | |||||
# | |||||
CC := gcc | |||||
COMPILER_SEP := / | |||||
# The object file extension (for standard and static libraries). This can be | |||||
# .o, .tco, .obj, etc., depending on the platform. | |||||
# | |||||
O := o | |||||
SO := o | |||||
# The library file extension (for standard and static libraries). This can | |||||
# be .a, .lib, etc., depending on the platform. | |||||
# | |||||
A := a | |||||
SA := a | |||||
# Path inclusion flag. Some compilers use a different flag than `-I' to | |||||
# specify an additional include path. Examples are `/i=' or `-J'. | |||||
# | |||||
I := -I | |||||
# C flag used to define a macro before the compilation of a given source | |||||
# object. Usually it is `-D' like in `-DDEBUG'. | |||||
# | |||||
D := -D | |||||
# The link flag used to specify a given library file on link. Note that | |||||
# this is only used to compile the demo programs, not the library itself. | |||||
# | |||||
L := -l | |||||
# Target flag. | |||||
# | |||||
T := -o$(space) | |||||
# C flags | |||||
# | |||||
# These should concern: debug output, optimization & warnings. | |||||
# | |||||
# Use the ANSIFLAGS variable to define the compiler flags used to enforce | |||||
# ANSI compliance. | |||||
# | |||||
CFLAGS ?= -c -g -O3 -Wall | |||||
# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. | |||||
# | |||||
ANSIFLAGS ?= -std=c99 -pedantic | |||||
# Library linking | |||||
# | |||||
CLEAN_LIBRARY ?= $(DELETE) $(subst /,$(SEP),$(PROJECT_LIBRARY)) | |||||
LINK_LIBRARY = $(AR) -r $@ $(OBJECTS_LIST) | |||||
# EOF |
@ -0,0 +1,85 @@ | |||||
# | |||||
# FreeType 2 Intel C/C++ definitions (VC++ compatibility mode) | |||||
# | |||||
# Copyright (C) 1996-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
# compiler command line name | |||||
# | |||||
CC := icl | |||||
COMPILER_SEP := $(SEP) | |||||
# The object file extension (for standard and static libraries). This can be | |||||
# .o, .tco, .obj, etc., depending on the platform. | |||||
# | |||||
O := obj | |||||
SO := obj | |||||
# The library file extension (for standard and static libraries). This can | |||||
# be .a, .lib, etc., depending on the platform. | |||||
# | |||||
A := lib | |||||
SA := lib | |||||
# Path inclusion flag. Some compilers use a different flag than `-I' to | |||||
# specify an additional include path. Examples are `/i=' or `-J'. | |||||
# | |||||
I := /I | |||||
# C flag used to define a macro before the compilation of a given source | |||||
# object. Usually it is `-D' like in `-DDEBUG'. | |||||
# | |||||
D := /D | |||||
# The link flag used to specify a given library file on link. Note that | |||||
# this is only used to compile the demo programs, not the library itself. | |||||
# | |||||
L := /Fl | |||||
# Target flag. | |||||
# | |||||
T := /Fo | |||||
TE := /Fe | |||||
# C flags | |||||
# | |||||
# These should concern: debug output, optimization & warnings. | |||||
# | |||||
# Use the ANSIFLAGS variable to define the compiler flags used to enforce | |||||
# ANSI compliance. | |||||
# | |||||
# Note that the Intel C/C++ compiler version 4.5 complains about | |||||
# the use of FT_FIELD_OFFSET with "value must be arithmetic type"! | |||||
# This really looks like a bug in the compiler because the macro | |||||
# _does_ compute an arithmetic value, so we disable this warning | |||||
# with "/Qwd32". | |||||
# | |||||
CFLAGS ?= /nologo /c /Ox /G5 /W3 /Qwd32 | |||||
# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. | |||||
# | |||||
ANSIFLAGS ?= /Qansi_alias /Za | |||||
# Library linking | |||||
# | |||||
#CLEAN_LIBRARY = | |||||
LINK_LIBRARY = lib /nologo /out:$(subst /,$(COMPILER_SEP),$@ $(OBJECTS_LIST)) | |||||
# EOF |
@ -0,0 +1,83 @@ | |||||
# | |||||
# FreeType 2 Unix LCC specific definitions | |||||
# | |||||
# Copyright (C) 1996-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
# Command line name | |||||
# | |||||
CC := lcc | |||||
COMPILER_SEP := $(SEP) | |||||
# The object file extension (for standard and static libraries). This can be | |||||
# .o, .tco, .obj, etc., depending on the platform. | |||||
# | |||||
O := o | |||||
SO := o | |||||
# The library file extension (for standard and static libraries). This can | |||||
# be .a, .lib, etc., depending on the platform. | |||||
# | |||||
A := a | |||||
SA := a | |||||
# Path inclusion flag. Some compilers use a different flag than `-I' to | |||||
# specify an additional include path. Examples are `/i=' or `-J'. | |||||
# | |||||
I := -I | |||||
# C flag used to define a macro before the compilation of a given source | |||||
# object. Usually it is `-D' like in `-DDEBUG'. | |||||
# | |||||
D := -D | |||||
# The link flag used to specify a given library file on link. Note that | |||||
# this is only used to compile the demo programs, not the library itself. | |||||
# | |||||
L := -l | |||||
# Target flag. | |||||
# | |||||
T := -o$(space) | |||||
# C flags | |||||
# | |||||
# These should concern: debug output, optimization & warnings. | |||||
# | |||||
# Use the ANSIFLAGS variable to define the compiler flags used to enforce | |||||
# ANSI compliance. | |||||
# | |||||
CFLAGS ?= -c -g | |||||
# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. | |||||
# | |||||
# LCC is pure ANSI anyway! | |||||
# | |||||
# the "-A" flag simply increments verbosity about non ANSI code | |||||
# | |||||
ANSIFLAGS ?= -A | |||||
# library linking | |||||
# | |||||
CLEAN_LIBRARY ?= $(DELETE) $(PROJECT_LIBRARY) | |||||
LINK_LIBRARY = $(AR) -r $@ $(OBJECTS_LIST) | |||||
# EOF |
@ -0,0 +1,76 @@ | |||||
# | |||||
# FreeType 2 Visual Age C++ specific definitions | |||||
# | |||||
# Copyright (C) 1996-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
# command line compiler name | |||||
# | |||||
CC := icc | |||||
COMPILER_SEP := $(SEP) | |||||
# The object file extension (for standard and static libraries). This can be | |||||
# .o, .tco, .obj, etc., depending on the platform. | |||||
# | |||||
O := obj | |||||
SO := obj | |||||
# The library file extension (for standard and static libraries). This can | |||||
# be .a, .lib, etc., depending on the platform. | |||||
# | |||||
A := lib | |||||
SA := lib | |||||
# Path inclusion flag. Some compilers use a different flag than `-I' to | |||||
# specify an additional include path. Examples are `/i=' or `-J'. | |||||
# | |||||
I := /I | |||||
# C flag used to define a macro before the compilation of a given source | |||||
# object. Usually it is `-D' like in `-DDEBUG'. | |||||
# | |||||
D := /D | |||||
# The link flag used to specify a given library file on link. Note that | |||||
# this is only used to compile the demo programs, not the library itself. | |||||
# | |||||
L := /Fl | |||||
# Target flag. | |||||
# | |||||
T := /Fo | |||||
# C flags | |||||
# | |||||
# These should concern: debug output, optimization & warnings. | |||||
# | |||||
CFLAGS ?= /Q- /Gd+ /O2 /G5 /W3 /C | |||||
# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. | |||||
# | |||||
ANSI_FLAGS := /Sa | |||||
# Library linking | |||||
# | |||||
#CLEAN_LIBRARY := | |||||
LINK_LIBRARY = lib /nologo /out:$(subst /,$(COMPILER_SEP),$@ $(OBJECTS_LIST)) | |||||
# EOF |
@ -0,0 +1,82 @@ | |||||
# | |||||
# FreeType 2 Visual C++ definitions | |||||
# | |||||
# Copyright (C) 1996-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
# compiler command line name | |||||
# | |||||
CC := cl | |||||
COMPILER_SEP := $(SEP) | |||||
# The object file extension (for standard and static libraries). This can be | |||||
# .o, .tco, .obj, etc., depending on the platform. | |||||
# | |||||
O := obj | |||||
SO := obj | |||||
# The library file extension (for standard and static libraries). This can | |||||
# be .a, .lib, etc., depending on the platform. | |||||
# | |||||
A := lib | |||||
SA := lib | |||||
# Path inclusion flag. Some compilers use a different flag than `-I' to | |||||
# specify an additional include path. Examples are `/i=' or `-J'. | |||||
# | |||||
I := /I | |||||
# C flag used to define a macro before the compilation of a given source | |||||
# object. Usually it is `-D' like in `-DDEBUG'. | |||||
# | |||||
D := /D | |||||
# The link flag used to specify a given library file on link. Note that | |||||
# this is only used to compile the demo programs, not the library itself. | |||||
# | |||||
L := /Fl | |||||
# Target flag. | |||||
# | |||||
T := /Fo | |||||
# Target executable flag | |||||
# | |||||
TE := /Fe | |||||
# C flags | |||||
# | |||||
# These should concern: debug output, optimization & warnings. | |||||
# | |||||
# Use the ANSIFLAGS variable to define the compiler flags used to enforce | |||||
# ANSI compliance. | |||||
# | |||||
CFLAGS ?= /nologo /c /Ox /W3 /WX | |||||
# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. | |||||
# | |||||
ANSIFLAGS ?= /Za /D_CRT_SECURE_NO_DEPRECATE | |||||
# Library linking | |||||
# | |||||
#CLEAN_LIBRARY = | |||||
LINK_LIBRARY = lib /nologo /out:$(subst /,$(COMPILER_SEP),$@ $(OBJECTS_LIST)) | |||||
# EOF |
@ -0,0 +1,81 @@ | |||||
# | |||||
# FreeType 2 Watcom-specific definitions | |||||
# | |||||
# Copyright (C) 1996-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
# Compiler command line name | |||||
# | |||||
CC := wcc386 | |||||
COMPILER_SEP := $(SEP) | |||||
# The object file extension (for standard and static libraries). This can be | |||||
# .o, .tco, .obj, etc., depending on the platform. | |||||
# | |||||
O := obj | |||||
SO := obj | |||||
# The library file extension (for standard and static libraries). This can | |||||
# be .a, .lib, etc., depending on the platform. | |||||
# | |||||
A := lib | |||||
SA := lib | |||||
# Path inclusion flag. Some compilers use a different flag than `-I' to | |||||
# specify an additional include path. Examples are `/i=' or `-J'. | |||||
# | |||||
I := -I= | |||||
# C flag used to define a macro before the compilation of a given source | |||||
# object. Usually it is `-D' like in `-DDEBUG'. | |||||
# | |||||
D := -D | |||||
# The link flag used to specify a given library file on link. Note that | |||||
# this is only used to compile the demo programs, not the library itself. | |||||
# | |||||
L := -l | |||||
# Target flag. | |||||
# | |||||
T := -FO= | |||||
# C flags | |||||
# | |||||
# These should concern: debug output, optimization & warnings. | |||||
# | |||||
# Use the ANSIFLAGS variable to define the compiler flags used to enforce | |||||
# ANSI compliance. | |||||
# | |||||
CFLAGS ?= -zq | |||||
# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. | |||||
# | |||||
ANSIFLAGS ?= -za | |||||
# Library linking | |||||
# | |||||
CLEAN_LIBRARY ?= $(DELETE) $(subst /,$(SEP),$(PROJECT_LIBRARY)) | |||||
LINK_LIBRARY = $(subst /,$(COMPILER_SEP), \ | |||||
wlib -q -n $@; \ | |||||
$(foreach m, $(OBJECTS_LIST), wlib -q $@ +$(m);) \ | |||||
echo > nul) | |||||
# EOF |
@ -0,0 +1,81 @@ | |||||
# | |||||
# FreeType 2 Win32-LCC specific definitions | |||||
# | |||||
# Copyright (C) 1996-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
# Command line name | |||||
# | |||||
CC := lcc | |||||
COMPILER_SEP := $(SEP) | |||||
# The object file extension (for standard and static libraries). This can be | |||||
# .o, .tco, .obj, etc., depending on the platform. | |||||
# | |||||
O := obj | |||||
SO := obj | |||||
# The library file extension (for standard and static libraries). This can | |||||
# be .a, .lib, etc., depending on the platform. | |||||
# | |||||
A := lib | |||||
SA := lib | |||||
# Path inclusion flag. Some compilers use a different flag than `-I' to | |||||
# specify an additional include path. Examples are `/i=' or `-J'. | |||||
# | |||||
I := -I | |||||
# C flag used to define a macro before the compilation of a given source | |||||
# object. Usually it is `-D' like in `-DDEBUG'. | |||||
# | |||||
D := -D | |||||
# The link flag used to specify a given library file on link. Note that | |||||
# this is only used to compile the demo programs, not the library itself. | |||||
# | |||||
L := -Fl | |||||
# Target flag. | |||||
# | |||||
T := -Fo | |||||
# C flags | |||||
# | |||||
# These should concern: debug output, optimization & warnings. | |||||
# | |||||
# Use the ANSIFLAGS variable to define the compiler flags used to enforce | |||||
# ANSI compliance. | |||||
# | |||||
CFLAGS ?= -c -g2 -O | |||||
# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. | |||||
# | |||||
# LCC is pure ANSI anyway! | |||||
# | |||||
ANSIFLAGS ?= | |||||
# library linking | |||||
# | |||||
#CLEAN_LIBRARY := | |||||
LINK_LIBRARY = lcclib /out:$(subst /,$(COMPILER_SEP),$@ $(OBJECTS_LIST)) | |||||
# EOF |
@ -0,0 +1,128 @@ | |||||
# | |||||
# FreeType 2 host platform detection rules | |||||
# | |||||
# Copyright (C) 1996-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
# This sub-Makefile is in charge of detecting the current platform. It sets | |||||
# the following variables: | |||||
# | |||||
# PLATFORM_DIR The configuration and system-specific directory. Usually | |||||
# `builds/$(PLATFORM)' but can be different for custom builds | |||||
# of the library. | |||||
# | |||||
# The following variables must be defined in system specific `detect.mk' | |||||
# files: | |||||
# | |||||
# PLATFORM The detected platform. This will default to `ansi' if | |||||
# auto-detection fails. | |||||
# CONFIG_FILE The configuration sub-makefile to use. This usually depends | |||||
# on the compiler defined in the `CC' environment variable. | |||||
# DELETE The shell command used to remove a given file. | |||||
# COPY The shell command used to copy one file. | |||||
# SEP The platform-specific directory separator. | |||||
# COMPILER_SEP The separator used in arguments of the compilation tools. | |||||
# CC The compiler to use. | |||||
# | |||||
# You need to set the following variable(s) before calling it: | |||||
# | |||||
# TOP_DIR The top-most directory in the FreeType library source | |||||
# hierarchy. If not defined, it will default to `.'. | |||||
# Set auto-detection default to `ansi' resp. UNIX-like operating systems. | |||||
# | |||||
PLATFORM := ansi | |||||
DELETE := $(RM) | |||||
COPY := cp | |||||
CAT := cat | |||||
SEP := / | |||||
BUILD_CONFIG := $(TOP_DIR)/builds | |||||
# These two assignments must be delayed. | |||||
PLATFORM_DIR = $(BUILD_CONFIG)/$(PLATFORM) | |||||
CONFIG_RULES = $(PLATFORM_DIR)/$(CONFIG_FILE) | |||||
# We define the BACKSLASH variable to hold a single back-slash character. | |||||
# This is needed because a line like | |||||
# | |||||
# SEP := \ | |||||
# | |||||
# does not work with GNU Make (the backslash is interpreted as a line | |||||
# continuation). While a line like | |||||
# | |||||
# SEP := \\ | |||||
# | |||||
# really defines $(SEP) as `\' on Unix, and `\\' on Dos and Windows! | |||||
# | |||||
BACKSLASH := $(strip \ ) | |||||
# Find all auto-detectable platforms. | |||||
# | |||||
PLATFORMS := $(notdir $(subst /detect.mk,,$(wildcard $(BUILD_CONFIG)/*/detect.mk))) | |||||
.PHONY: $(PLATFORMS) ansi | |||||
# Filter out platform specified as setup target. | |||||
# | |||||
PLATFORM := $(firstword $(filter $(MAKECMDGOALS),$(PLATFORMS))) | |||||
# If no setup target platform was specified, enable auto-detection/ | |||||
# default platform. | |||||
# | |||||
ifeq ($(PLATFORM),) | |||||
PLATFORM := ansi | |||||
endif | |||||
# If the user has explicitly asked for `ansi' on the command line, | |||||
# disable auto-detection. | |||||
# | |||||
ifeq ($(findstring ansi,$(MAKECMDGOALS)),) | |||||
# Now, include all detection rule files found in the `builds/<system>' | |||||
# directories. Note that the calling order of the various `detect.mk' | |||||
# files isn't predictable. | |||||
# | |||||
include $(wildcard $(BUILD_CONFIG)/*/detect.mk) | |||||
endif | |||||
# In case no detection rule file was successful, use the default. | |||||
# | |||||
ifndef CONFIG_FILE | |||||
CONFIG_FILE := ansi.mk | |||||
setup: std_setup | |||||
.PHONY: setup | |||||
endif | |||||
# Flash out and copy rules. | |||||
# | |||||
.PHONY: std_setup | |||||
std_setup: | |||||
$(info ) | |||||
$(info $(PROJECT_TITLE) build system -- automatic system detection) | |||||
$(info ) | |||||
$(info The following settings are used:) | |||||
$(info ) | |||||
$(info $(empty) platform $(PLATFORM)) | |||||
$(info $(empty) compiler $(CC)) | |||||
$(info $(empty) configuration directory $(subst /,$(SEP),$(PLATFORM_DIR))) | |||||
$(info $(empty) configuration rules $(subst /,$(SEP),$(CONFIG_RULES))) | |||||
$(info ) | |||||
$(info If this does not correspond to your system or settings please remove the file) | |||||
$(info `$(CONFIG_MK)' from this directory then read the INSTALL file for help.) | |||||
$(info ) | |||||
$(info Otherwise, simply type `$(MAKE)' again to build the library,) | |||||
$(info or `$(MAKE) refdoc' to build the API reference (this needs Python >= 3.5).) | |||||
$(info ) | |||||
@$(COPY) $(subst /,$(SEP),$(CONFIG_RULES) $(CONFIG_MK)) | |||||
# EOF |
@ -0,0 +1,152 @@ | |||||
# | |||||
# FreeType 2 configuration file to detect a DOS host platform. | |||||
# | |||||
# Copyright (C) 1996-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
.PHONY: setup | |||||
ifeq ($(PLATFORM),ansi) | |||||
# Test for DJGPP by checking the DJGPP environment variable, which must be | |||||
# set in order to use the system (ie. it will always be present when the | |||||
# `make' utility is run). | |||||
# | |||||
# We test for the COMSPEC environment variable, then run the `ver' | |||||
# command-line program to see if its output contains the word `Dos' or | |||||
# `DOS'. | |||||
# | |||||
# If this is true, we are running a Dos-ish platform (or an emulation). | |||||
# | |||||
ifdef DJGPP | |||||
PLATFORM := dos | |||||
else | |||||
ifdef COMSPEC | |||||
is_dos := $(findstring DOS,$(subst Dos,DOS,$(shell ver))) | |||||
# We try to recognize a Dos session under OS/2. The `ver' command | |||||
# returns `Operating System/2 ...' there, so `is_dos' should be empty. | |||||
# | |||||
# To recognize a Dos session under OS/2, we check COMSPEC for the | |||||
# substring `MDOS\COMMAND' | |||||
# | |||||
ifeq ($(is_dos),) | |||||
is_dos := $(findstring MDOS\COMMAND,$(COMSPEC)) | |||||
endif | |||||
# We also try to recognize Dos 7.x without Windows 9X launched. | |||||
# See builds/windows/detect.mk for explanations about the logic. | |||||
# | |||||
ifeq ($(is_dos),) | |||||
ifdef winbootdir | |||||
#ifneq ($(OS),Windows_NT) | |||||
# If windows is available, do not trigger this test. | |||||
ifndef windir | |||||
is_dos := $(findstring Windows,$(strip $(shell ver))) | |||||
endif | |||||
#endif | |||||
endif | |||||
endif | |||||
endif # test COMSPEC | |||||
ifneq ($(is_dos),) | |||||
PLATFORM := dos | |||||
endif # test Dos | |||||
endif # test DJGPP | |||||
endif # test PLATFORM ansi | |||||
ifeq ($(PLATFORM),dos) | |||||
# Use DJGPP (i.e. gcc) by default. | |||||
# | |||||
CONFIG_FILE := dos-gcc.mk | |||||
CC ?= gcc | |||||
# additionally, we provide hooks for various other compilers | |||||
# | |||||
ifneq ($(findstring emx,$(MAKECMDGOALS)),) # EMX gcc | |||||
CONFIG_FILE := dos-emx.mk | |||||
CC := gcc | |||||
.PHONY: emx | |||||
emx: setup | |||||
@cd . | |||||
endif | |||||
ifneq ($(findstring turboc,$(MAKECMDGOALS)),) # Turbo C | |||||
CONFIG_FILE := dos-tcc.mk | |||||
CC := tcc | |||||
.PHONY: turboc | |||||
turboc: setup | |||||
@cd . | |||||
endif | |||||
ifneq ($(findstring watcom,$(MAKECMDGOALS)),) # Watcom C/C++ | |||||
CONFIG_FILE := dos-wat.mk | |||||
CC := wcc386 | |||||
.PHONY: watcom | |||||
watcom: setup | |||||
@cd . | |||||
endif | |||||
ifneq ($(findstring borlandc,$(MAKECMDGOALS)),) # Borland C/C++ 32-bit | |||||
CONFIG_FILE := dos-bcc.mk | |||||
CC := bcc32 | |||||
.PHONY: borlandc | |||||
borlandc: setup | |||||
@cd . | |||||
endif | |||||
ifneq ($(findstring borlandc16,$(MAKECMDGOALS)),) # Borland C/C++ 16-bit | |||||
CONFIG_FILE := dos-bcc.mk | |||||
CC := bcc | |||||
.PHONY: borlandc16 | |||||
borlandc16: setup | |||||
@cd . | |||||
endif | |||||
ifneq ($(findstring bash,$(SHELL)),) # check for bash | |||||
SEP := / | |||||
DELETE := rm | |||||
COPY := cp | |||||
CAT := cat | |||||
setup: std_setup | |||||
else | |||||
SEP := $(BACKSLASH) | |||||
DELETE := del | |||||
CAT := type | |||||
# Setting COPY is a bit trickier. We can be running DJGPP on some | |||||
# Windows NT derivatives, like XP. See builds/windows/detect.mk for | |||||
# explanations why we need hacking here. | |||||
# | |||||
ifeq ($(OS),Windows_NT) | |||||
COPY := cmd.exe /c copy | |||||
else | |||||
COPY := copy | |||||
endif # test NT | |||||
setup: std_setup | |||||
endif | |||||
endif # test PLATFORM dos | |||||
# EOF |
@ -0,0 +1,48 @@ | |||||
# | |||||
# FreeType 2 DOS specific definitions | |||||
# | |||||
# Copyright (C) 1996-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
DELETE := del | |||||
CAT := type | |||||
SEP := $(strip \ ) | |||||
PLATFORM_DIR := $(TOP_DIR)/builds/dos | |||||
PLATFORM := dos | |||||
# This is used for `make refdoc' and `make refdoc-venv' | |||||
# | |||||
BIN := Scripts | |||||
# The executable file extension (for tools), *with* leading dot. | |||||
# | |||||
E := .exe | |||||
# The directory where all library files are placed. | |||||
# | |||||
# By default, this is the same as $(OBJ_DIR); however, this can be changed | |||||
# to suit particular needs. | |||||
# | |||||
LIB_DIR := $(OBJ_DIR) | |||||
# The name of the final library file. Note that the DOS-specific Makefile | |||||
# uses a shorter (8.3) name. | |||||
# | |||||
LIBRARY := $(PROJECT) | |||||
# The NO_OUTPUT macro is used to ignore the output of commands. | |||||
# | |||||
NO_OUTPUT = > nul | |||||
# EOF |
@ -0,0 +1,21 @@ | |||||
# | |||||
# FreeType 2 configuration rules for the EMX gcc compiler | |||||
# | |||||
# Copyright (C) 2003-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
include $(TOP_DIR)/builds/dos/dos-def.mk | |||||
include $(TOP_DIR)/builds/compiler/emx.mk | |||||
include $(TOP_DIR)/builds/link_dos.mk | |||||
# EOF |
@ -0,0 +1,21 @@ | |||||
# | |||||
# FreeType 2 configuration rules for the DJGPP compiler | |||||
# | |||||
# Copyright (C) 1996-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
include $(TOP_DIR)/builds/dos/dos-def.mk | |||||
include $(TOP_DIR)/builds/compiler/gcc.mk | |||||
include $(TOP_DIR)/builds/link_dos.mk | |||||
# EOF |
@ -0,0 +1,20 @@ | |||||
# | |||||
# FreeType 2 configuration rules for the Watcom C/C++ compiler | |||||
# | |||||
# Copyright (C) 2003-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
include $(TOP_DIR)/builds/dos/dos-def.mk | |||||
include $(TOP_DIR)/builds/compiler/watcom.mk | |||||
include $(TOP_DIR)/builds/link_dos.mk | |||||
# EOF |
@ -0,0 +1,80 @@ | |||||
# | |||||
# FreeType 2 exports sub-Makefile | |||||
# | |||||
# Copyright (C) 2005-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
# DO NOT INVOKE THIS MAKEFILE DIRECTLY! IT IS MEANT TO BE INCLUDED BY | |||||
# OTHER MAKEFILES. | |||||
# This sub-Makefile is used to compute the list of exported symbols whenever | |||||
# the EXPORTS_LIST variable is defined by one of the platform or compiler | |||||
# specific build files. | |||||
# | |||||
# EXPORTS_LIST contains the name of the `list' file, for example a Windows | |||||
# .DEF file. | |||||
# | |||||
ifneq ($(EXPORTS_LIST),) | |||||
# CCexe is the compiler used to compile the `apinames' tool program | |||||
# on the host machine. This isn't necessarily the same as the compiler | |||||
# which can be a cross-compiler for a different architecture, for example. | |||||
# | |||||
ifeq ($(CCexe),) | |||||
CCexe := $(CC) | |||||
endif | |||||
# TE acts like T, but for executables instead of object files. | |||||
ifeq ($(TE),) | |||||
TE := $T | |||||
endif | |||||
# The list of public headers we're going to parse. | |||||
PUBLIC_HEADERS := $(filter-out $(PUBLIC_DIR)/ftmac.h, \ | |||||
$(wildcard $(PUBLIC_DIR)/*.h)) | |||||
ifneq ($(ftmac_c),) | |||||
PUBLIC_HEADERS += $(PUBLIC_DIR)/ftmac.h | |||||
endif | |||||
# The `apinames' source and executable. We use $E_BUILD as the host | |||||
# executable suffix, which *includes* the final dot. | |||||
# | |||||
# Note that $(APINAMES_OPTIONS) is empty, except for Windows compilers. | |||||
# | |||||
APINAMES_SRC := $(subst /,$(SEP),$(TOP_DIR)/src/tools/apinames.c) | |||||
APINAMES_EXE := $(subst /,$(SEP),$(OBJ_DIR)/apinames$(E_BUILD)) | |||||
$(APINAMES_EXE): $(APINAMES_SRC) | |||||
$(CCexe) $(CCexe_CFLAGS) $(TE)$@ $< $(CCexe_LDFLAGS) | |||||
.PHONY: symbols_list | |||||
symbols_list: $(EXPORTS_LIST) | |||||
# We manually add TT_New_Context and TT_RunIns, which are needed by TT | |||||
# debuggers, to the EXPORTS_LIST. | |||||
# | |||||
$(EXPORTS_LIST): $(APINAMES_EXE) $(PUBLIC_HEADERS) | |||||
$(subst /,$(SEP),$(APINAMES_EXE)) -o$@ $(APINAMES_OPTIONS) $(PUBLIC_HEADERS) | |||||
@echo TT_New_Context >> $(EXPORTS_LIST) | |||||
@echo TT_RunIns >> $(EXPORTS_LIST) | |||||
$(PROJECT_LIBRARY): $(EXPORTS_LIST) | |||||
CLEAN += $(EXPORTS_LIST) \ | |||||
$(APINAMES_EXE) | |||||
endif | |||||
# EOF |
@ -0,0 +1,385 @@ | |||||
# | |||||
# FreeType 2 library sub-Makefile | |||||
# | |||||
# Copyright (C) 1996-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
# DO NOT INVOKE THIS MAKEFILE DIRECTLY! IT IS MEANT TO BE INCLUDED BY | |||||
# OTHER MAKEFILES. | |||||
# The following variables (set by other Makefile components, in the | |||||
# environment, or on the command line) are used: | |||||
# | |||||
# PLATFORM_DIR The architecture-dependent directory, | |||||
# e.g., `$(TOP_DIR)/builds/unix'. Added to INCLUDES also. | |||||
# | |||||
# OBJ_DIR The directory in which object files are created. | |||||
# | |||||
# LIB_DIR The directory in which the library is created. | |||||
# | |||||
# DOC_DIR The directory in which the API reference is created. | |||||
# | |||||
# INCLUDES A list of directories to be included additionally. | |||||
# | |||||
# DEVEL_DIR Development directory which is added to the INCLUDES | |||||
# variable before the standard include directories. | |||||
# | |||||
# CFLAGS Compilation flags. This overrides the default settings | |||||
# in the platform-specific configuration files. | |||||
# | |||||
# FTSYS_SRC If set, its value is used as the name of a replacement | |||||
# file for `src/base/ftsystem.c'. | |||||
# | |||||
# FTDEBUG_SRC If set, its value is used as the name of a replacement | |||||
# file for `src/base/ftdebug.c'. [For a normal build, this | |||||
# file does nothing.] | |||||
# | |||||
# FTMODULE_H The file which contains the list of module classes for | |||||
# the current build. Usually, this is automatically | |||||
# created by `modules.mk'. | |||||
# | |||||
# BASE_OBJ_S | |||||
# BASE_OBJ_M A list of base objects (for single object and multiple | |||||
# object builds, respectively). Set up in | |||||
# `src/base/rules.mk'. | |||||
# | |||||
# BASE_EXT_OBJ A list of base extension objects. Set up in | |||||
# `src/base/rules.mk'. | |||||
# | |||||
# DRV_OBJ_S | |||||
# DRV_OBJ_M A list of driver objects (for single object and multiple | |||||
# object builds, respectively). Set up cumulatively in | |||||
# `src/<driver>/rules.mk'. | |||||
# | |||||
# CLEAN | |||||
# DISTCLEAN The sub-makefiles can append additional stuff to these two | |||||
# variables which is to be removed for the `clean' resp. | |||||
# `distclean' target. | |||||
# | |||||
# TOP_DIR, SEP, | |||||
# COMPILER_SEP, | |||||
# LIBRARY, CC, | |||||
# A, I, O, T Check `config.mk' for details. | |||||
# The targets `objects' and `library' are defined at the end of this | |||||
# Makefile after all other rules have been included. | |||||
# | |||||
.PHONY: single multi objects library refdoc refdoc-venv | |||||
# default target -- build single objects and library | |||||
# | |||||
single: objects library | |||||
# `multi' target -- build multiple objects and library | |||||
# | |||||
multi: objects library | |||||
# The FreeType source directory, usually `./src'. | |||||
# | |||||
SRC_DIR := $(TOP_DIR)/src | |||||
# The directory where the base layer components are placed, usually | |||||
# `./src/base'. | |||||
# | |||||
BASE_DIR := $(SRC_DIR)/base | |||||
# Other derived directories. | |||||
# | |||||
PUBLIC_DIR := $(TOP_DIR)/include/freetype | |||||
INTERNAL_DIR := $(PUBLIC_DIR)/internal | |||||
SERVICES_DIR := $(INTERNAL_DIR)/services | |||||
CONFIG_DIR := $(PUBLIC_DIR)/config | |||||
# The documentation directory. | |||||
# | |||||
DOC_DIR ?= $(TOP_DIR)/docs | |||||
# The final name of the library file. | |||||
# | |||||
PROJECT_LIBRARY := $(LIB_DIR)/$(LIBRARY).$A | |||||
# include paths | |||||
# | |||||
# IMPORTANT NOTE: The architecture-dependent directory must ALWAYS be placed | |||||
# before the standard include list. Porters are then able to | |||||
# put their own version of some of the FreeType components | |||||
# in the `builds/<system>' directory, as these files will | |||||
# override the default sources. | |||||
# | |||||
INCLUDES := $(subst /,$(COMPILER_SEP),$(OBJ_DIR) \ | |||||
$(DEVEL_DIR) \ | |||||
$(PLATFORM_DIR) \ | |||||
$(TOP_DIR)/include) | |||||
INCLUDE_FLAGS := $(INCLUDES:%=$I%) | |||||
# For a development build, we assume that the external library dependencies | |||||
# defined in `ftoption.h' are fulfilled, so we directly access the necessary | |||||
# include directory information using `pkg-config'. | |||||
# | |||||
ifdef DEVEL_DIR | |||||
INCLUDE_FLAGS += $(shell pkg-config --cflags libpng) | |||||
INCLUDE_FLAGS += $(shell pkg-config --cflags harfbuzz) | |||||
INCLUDE_FLAGS += $(shell pkg-config --cflags libbrotlidec) | |||||
endif | |||||
# C flags used for the compilation of an object file. This must include at | |||||
# least the paths for the `base' and `builds/<system>' directories; | |||||
# debug/optimization/warning flags + ansi compliance if needed. | |||||
# | |||||
# $(INCLUDE_FLAGS) should come before $(CFLAGS) to avoid problems with | |||||
# old FreeType versions. | |||||
# | |||||
# Note what we also define the macro FT2_BUILD_LIBRARY when building | |||||
# FreeType. This is required to let our sources include the internal | |||||
# headers (something forbidden by clients). | |||||
# | |||||
# `CPPFLAGS' might be specified by the user in the environment. | |||||
# | |||||
FT_CFLAGS = $(CPPFLAGS) \ | |||||
$(CFLAGS) \ | |||||
$DFT2_BUILD_LIBRARY | |||||
FT_COMPILE := $(CC) $(ANSIFLAGS) $(INCLUDE_FLAGS) $(FT_CFLAGS) | |||||
# Include the `exports' rules file. | |||||
# | |||||
include $(TOP_DIR)/builds/exports.mk | |||||
# Initialize the list of objects. | |||||
# | |||||
OBJECTS_LIST := | |||||
# Define $(PUBLIC_H) as the list of all public header files located in | |||||
# `$(TOP_DIR)/include/freetype'. $(INTERNAL_H), and $(CONFIG_H) are defined | |||||
# similarly. $(FTOPTION_H) is the option file used in the compilation. | |||||
# | |||||
# This is used to simplify the dependency rules -- if one of these files | |||||
# changes, the whole library is recompiled. | |||||
# | |||||
ifneq ($(wildcard $(OBJ_DIR)/ftoption.h),) | |||||
FTOPTION_H := $(OBJ_DIR)/ftoption.h | |||||
else ifneq ($(wildcard $(PLATFORM_DIR)/ftoption.h),) | |||||
FTOPTION_H := $(PLATFORM_DIR)/ftoption.h | |||||
endif | |||||
PUBLIC_H := $(wildcard $(PUBLIC_DIR)/*.h) | |||||
INTERNAL_H := $(wildcard $(INTERNAL_DIR)/*.h) \ | |||||
$(wildcard $(SERVICES_DIR)/*.h) | |||||
CONFIG_H := $(wildcard $(CONFIG_DIR)/*.h) \ | |||||
$(wildcard $(PLATFORM_DIR)/config/*.h) \ | |||||
$(FTMODULE_H) \ | |||||
$(FTOPTION_H) | |||||
DEVEL_H := $(wildcard $(TOP_DIR)/devel/*.h) | |||||
FREETYPE_H := $(PUBLIC_H) $(INTERNAL_H) $(CONFIG_H) $(DEVEL_H) | |||||
# ftsystem component | |||||
# | |||||
FTSYS_SRC ?= $(BASE_DIR)/ftsystem.c | |||||
FTSYS_OBJ := $(OBJ_DIR)/ftsystem.$O | |||||
OBJECTS_LIST += $(FTSYS_OBJ) | |||||
$(FTSYS_OBJ): $(FTSYS_SRC) $(FREETYPE_H) | |||||
$(FT_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<) | |||||
# ftdebug component | |||||
# | |||||
FTDEBUG_SRC ?= $(BASE_DIR)/ftdebug.c | |||||
FTDEBUG_OBJ := $(OBJ_DIR)/ftdebug.$O | |||||
OBJECTS_LIST += $(FTDEBUG_OBJ) | |||||
$(FTDEBUG_OBJ): $(FTDEBUG_SRC) $(FREETYPE_H) | |||||
$(FT_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<) | |||||
# Include all rule files from FreeType components. | |||||
# | |||||
include $(SRC_DIR)/base/rules.mk | |||||
include $(patsubst %,$(SRC_DIR)/%/rules.mk,$(MODULES)) | |||||
include $(SRC_DIR)/dlg/rules.mk | |||||
# ftinit component | |||||
# | |||||
# The C source `ftinit.c' contains the FreeType initialization routines. | |||||
# It is able to automatically register one or more drivers when the API | |||||
# function FT_Init_FreeType() is called. | |||||
# | |||||
# The set of initial drivers is determined by the driver Makefiles | |||||
# includes above. Each driver Makefile updates the FTINIT_xxx lists | |||||
# which contain additional include paths and macros used to compile the | |||||
# single `ftinit.c' source. | |||||
# | |||||
FTINIT_SRC := $(BASE_DIR)/ftinit.c | |||||
FTINIT_OBJ := $(OBJ_DIR)/ftinit.$O | |||||
OBJECTS_LIST += $(FTINIT_OBJ) | |||||
$(FTINIT_OBJ): $(FTINIT_SRC) $(FREETYPE_H) | |||||
$(FT_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<) | |||||
# ftver component | |||||
# | |||||
# The VERSIONINFO resource `ftver.rc' contains version and copyright | |||||
# to be compiled by windres and tagged into DLL usually. | |||||
# | |||||
ifneq ($(RC),) | |||||
FTVER_SRC := $(BASE_DIR)/ftver.rc | |||||
FTVER_OBJ := $(OBJ_DIR)/ftver.$O | |||||
OBJECTS_LIST += $(FTVER_OBJ) | |||||
$(FTVER_OBJ): $(FTVER_SRC) | |||||
$(RC) -o $@ $< | |||||
endif | |||||
# All FreeType library objects. | |||||
# | |||||
OBJ_M := $(BASE_OBJ_M) $(BASE_EXT_OBJ) $(DRV_OBJS_M) $(DLG_OBJS_M) | |||||
OBJ_S := $(BASE_OBJ_S) $(BASE_EXT_OBJ) $(DRV_OBJS_S) $(DLG_OBJS_S) | |||||
# The target `multi' on the Make command line indicates that we want to | |||||
# compile each source file independently. | |||||
# | |||||
# Otherwise, each module/driver is compiled in a single object file through | |||||
# source file inclusion (see `src/base/ftbase.c' or | |||||
# `src/truetype/truetype.c' for examples). | |||||
# | |||||
BASE_OBJECTS := $(OBJECTS_LIST) | |||||
ifneq ($(findstring multi,$(MAKECMDGOALS)),) | |||||
OBJECTS_LIST += $(OBJ_M) | |||||
else | |||||
OBJECTS_LIST += $(OBJ_S) | |||||
endif | |||||
objects: $(OBJECTS_LIST) | |||||
library: $(PROJECT_LIBRARY) | |||||
# Run `docwriter' in the current Python environment. | |||||
# | |||||
PYTHON ?= python | |||||
refdoc: | |||||
@echo Running docwriter... | |||||
$(PYTHON) -m docwriter \ | |||||
--prefix=ft2 \ | |||||
--title=FreeType-$(version) \ | |||||
--site=reference \ | |||||
--output=$(DOC_DIR) \ | |||||
$(PUBLIC_DIR)/*.h \ | |||||
$(PUBLIC_DIR)/config/*.h \ | |||||
$(PUBLIC_DIR)/cache/*.h | |||||
@echo Building static site... | |||||
cd $(DOC_DIR) && mkdocs build | |||||
@echo Done. | |||||
# Variables for running `refdoc' with Python's `virtualenv'. The | |||||
# environment is created in `DOC_DIR/env' and is gitignored. | |||||
# | |||||
# We still need to cd into `DOC_DIR' to build `mkdocs' because paths in | |||||
# `mkdocs.yml' are relative to the current working directory. | |||||
# | |||||
VENV_NAME := env | |||||
VENV_DIR := $(DOC_DIR)$(SEP)$(VENV_NAME) | |||||
ENV_PYTHON := $(VENV_DIR)$(SEP)$(BIN)$(SEP)$(PYTHON) | |||||
refdoc-venv: | |||||
@echo Setting up virtualenv for Python... | |||||
virtualenv --python=$(PYTHON) $(VENV_DIR) | |||||
@echo Installing docwriter... | |||||
$(ENV_PYTHON) -m pip install docwriter | |||||
@echo Running docwriter... | |||||
$(ENV_PYTHON) -m docwriter \ | |||||
--prefix=ft2 \ | |||||
--title=FreeType-$(version) \ | |||||
--site=reference \ | |||||
--output=$(DOC_DIR) \ | |||||
$(PUBLIC_DIR)/*.h \ | |||||
$(PUBLIC_DIR)/config/*.h \ | |||||
$(PUBLIC_DIR)/cache/*.h | |||||
@echo Building static site... | |||||
cd $(DOC_DIR) && $(VENV_NAME)$(SEP)$(BIN)$(SEP)python -m mkdocs build | |||||
@echo Done. | |||||
.PHONY: clean_project_std distclean_project_std | |||||
# Standard cleaning and distclean rules. These are not accepted | |||||
# on all systems though. | |||||
# | |||||
clean_project_std: | |||||
-$(DELETE) $(BASE_OBJECTS) $(OBJ_M) $(OBJ_S) $(CLEAN) | |||||
distclean_project_std: clean_project_std | |||||
-$(DELETE) $(PROJECT_LIBRARY) | |||||
-$(DELETE) *.orig *~ core *.core $(DISTCLEAN) | |||||
.PHONY: clean_project_dos distclean_project_dos | |||||
# The Dos command shell does not support very long list of arguments, so | |||||
# we are stuck with wildcards. | |||||
# | |||||
# Don't break the command lines with \; this prevents the "del" command from | |||||
# working correctly on Win9x. | |||||
# | |||||
clean_project_dos: | |||||
-$(DELETE) $(subst /,$(SEP),$(OBJ_DIR)/*.$O $(CLEAN) $(NO_OUTPUT)) | |||||
distclean_project_dos: clean_project_dos | |||||
-$(DELETE) $(subst /,$(SEP),$(PROJECT_LIBRARY) $(DISTCLEAN) $(NO_OUTPUT)) | |||||
.PHONY: remove_config_mk remove_ftmodule_h | |||||
# Remove configuration file (used for distclean). | |||||
# | |||||
remove_config_mk: | |||||
-$(DELETE) $(subst /,$(SEP),$(CONFIG_MK) $(NO_OUTPUT)) | |||||
# Remove module list (used for distclean). | |||||
# | |||||
remove_ftmodule_h: | |||||
-$(DELETE) $(subst /,$(SEP),$(FTMODULE_H) $(NO_OUTPUT)) | |||||
.PHONY: clean distclean | |||||
# The `config.mk' file must define `clean_project' and `distclean_project'. | |||||
# Implementations may use to relay these to either the `std' or `dos' | |||||
# versions from above, or simply provide their own implementation. | |||||
# | |||||
clean: clean_project | |||||
distclean: distclean_project remove_config_mk remove_ftmodule_h | |||||
-$(DELETE) $(subst /,$(SEP),$(DOC_DIR)/*.html $(NO_OUTPUT)) | |||||
# EOF |
@ -0,0 +1,42 @@ | |||||
# | |||||
# Link instructions for Dos-like systems (Dos, Win32, OS/2) | |||||
# | |||||
# Copyright (C) 1996-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
ifdef BUILD_PROJECT | |||||
.PHONY: clean_project distclean_project | |||||
# Now include the main sub-makefile. It contains all the rules used to | |||||
# build the library with the previous variables defined. | |||||
# | |||||
include $(TOP_DIR)/builds/$(PROJECT).mk | |||||
# The cleanup targets. | |||||
# | |||||
clean_project: clean_project_dos | |||||
distclean_project: distclean_project_dos | |||||
# This final rule is used to link all object files into a single library. | |||||
# this is compiler-specific | |||||
# | |||||
$(PROJECT_LIBRARY): $(OBJECTS_LIST) | |||||
ifdef CLEAN_LIBRARY | |||||
-$(CLEAN_LIBRARY) $(NO_OUTPUT) | |||||
endif | |||||
$(LINK_LIBRARY) | |||||
endif | |||||
# EOF |
@ -0,0 +1,42 @@ | |||||
# | |||||
# Link instructions for standard systems | |||||
# | |||||
# Copyright (C) 1996-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
ifdef BUILD_PROJECT | |||||
.PHONY: clean_project distclean_project | |||||
# Now include the main sub-makefile. It contains all the rules used to | |||||
# build the library with the previous variables defined. | |||||
# | |||||
include $(TOP_DIR)/builds/$(PROJECT).mk | |||||
# The cleanup targets. | |||||
# | |||||
clean_project: clean_project_std | |||||
distclean_project: distclean_project_std | |||||
# This final rule is used to link all object files into a single library. | |||||
# this is compiler-specific | |||||
# | |||||
$(PROJECT_LIBRARY): $(OBJECTS_LIST) | |||||
ifdef CLEAN_LIBRARY | |||||
-$(CLEAN_LIBRARY) $(NO_OUTPUT) | |||||
endif | |||||
$(LINK_LIBRARY) | |||||
endif | |||||
# EOF |
@ -0,0 +1,209 @@ | |||||
# File: FreeType.m68k_cfm.make | |||||
# Target: FreeType.m68k_cfm | |||||
# Created: Thursday, October 27, 2005 09:23:25 PM | |||||
MAKEFILE = FreeType.m68k_cfm.make | |||||
\xA5MondoBuild\xA5 = {MAKEFILE} # Make blank to avoid rebuilds when makefile is modified | |||||
ObjDir = :objs: | |||||
Includes = \xB6 | |||||
-ansi strict \xB6 | |||||
-includes unix \xB6 | |||||
-i :include: \xB6 | |||||
-i :src: \xB6 | |||||
-i :include:freetype:config: | |||||
Sym-68K = -sym off | |||||
COptions = \xB6 | |||||
-d FT_MACINTOSH=1 \xB6 | |||||
-d HAVE_FSSPEC=1 \xB6 | |||||
-d HAVE_FSREF=0 \xB6 | |||||
-d HAVE_QUICKDRAW_TOOLBOX=1 \xB6 | |||||
-d HAVE_QUICKDRAW_CARBON=0 \xB6 | |||||
-d HAVE_ATS=0 \xB6 | |||||
-d FT2_BUILD_LIBRARY \xB6 | |||||
-d FT_CONFIG_CONFIG_H="<ftconfig.h>" \xB6 | |||||
-d FT_CONFIG_MODULES_H="<ftmodule.h>" \xB6 | |||||
{Includes} {Sym-68K} -model cfmseg | |||||
### Source Files ### | |||||
SrcFiles = \xB6 | |||||
:src:autofit:autofit.c \xB6 | |||||
:builds:mac:ftbase.c \xB6 | |||||
:src:base:ftbbox.c \xB6 | |||||
:src:base:ftbdf.c \xB6 | |||||
:src:base:ftbitmap.c \xB6 | |||||
:src:base:ftdebug.c \xB6 | |||||
:src:base:ftfstype.c \xB6 | |||||
:src:base:ftglyph.c \xB6 | |||||
:src:base:ftgxval.c \xB6 | |||||
:src:base:ftinit.c \xB6 | |||||
:src:base:ftmm.c \xB6 | |||||
:src:base:ftotval.c \xB6 | |||||
:src:base:ftpfr.c \xB6 | |||||
:src:base:ftstroke.c \xB6 | |||||
:src:base:ftsynth.c \xB6 | |||||
:src:base:ftsystem.c \xB6 | |||||
:src:base:fttype1.c \xB6 | |||||
:src:base:ftwinfnt.c \xB6 | |||||
:src:cache:ftcache.c \xB6 | |||||
:src:bdf:bdf.c \xB6 | |||||
:src:cff:cff.c \xB6 | |||||
:src:cid:type1cid.c \xB6 | |||||
# :src:gxvalid:gxvalid.c \xB6 | |||||
:src:gzip:ftgzip.c \xB6 | |||||
:src:bzip2:ftbzip2.c \xB6 | |||||
:src:lzw:ftlzw.c \xB6 | |||||
:src:otvalid:otvalid.c \xB6 | |||||
:src:pcf:pcf.c \xB6 | |||||
:src:pfr:pfr.c \xB6 | |||||
:src:psaux:psaux.c \xB6 | |||||
:src:pshinter:pshinter.c \xB6 | |||||
:src:psnames:psmodule.c \xB6 | |||||
:src:raster:raster.c \xB6 | |||||
:src:sfnt:sfnt.c \xB6 | |||||
:src:smooth:smooth.c \xB6 | |||||
:src:truetype:truetype.c \xB6 | |||||
:src:type1:type1.c \xB6 | |||||
:src:type42:type42.c \xB6 | |||||
:src:winfonts:winfnt.c | |||||
### Object Files ### | |||||
ObjFiles-68K = \xB6 | |||||
"{ObjDir}autofit.c.o" \xB6 | |||||
"{ObjDir}ftbase.c.o" \xB6 | |||||
"{ObjDir}ftbbox.c.o" \xB6 | |||||
"{ObjDir}ftbdf.c.o" \xB6 | |||||
"{ObjDir}ftbitmap.c.o" \xB6 | |||||
"{ObjDir}ftdebug.c.o" \xB6 | |||||
"{ObjDir}ftfstype.c.o" \xB6 | |||||
"{ObjDir}ftglyph.c.o" \xB6 | |||||
"{ObjDir}ftgxval.c.o" \xB6 | |||||
"{ObjDir}ftinit.c.o" \xB6 | |||||
"{ObjDir}ftmm.c.o" \xB6 | |||||
"{ObjDir}ftotval.c.o" \xB6 | |||||
"{ObjDir}ftpfr.c.o" \xB6 | |||||
"{ObjDir}ftstroke.c.o" \xB6 | |||||
"{ObjDir}ftsynth.c.o" \xB6 | |||||
"{ObjDir}ftsystem.c.o" \xB6 | |||||
"{ObjDir}fttype1.c.o" \xB6 | |||||
"{ObjDir}ftwinfnt.c.o" \xB6 | |||||
"{ObjDir}ftcache.c.o" \xB6 | |||||
"{ObjDir}bdf.c.o" \xB6 | |||||
"{ObjDir}cff.c.o" \xB6 | |||||
"{ObjDir}type1cid.c.o" \xB6 | |||||
# "{ObjDir}gxvalid.c.o" \xB6 | |||||
"{ObjDir}ftgzip.c.o" \xB6 | |||||
"{ObjDir}ftbzip2.c.o" \xB6 | |||||
"{ObjDir}ftlzw.c.o" \xB6 | |||||
"{ObjDir}otvalid.c.o" \xB6 | |||||
"{ObjDir}pcf.c.o" \xB6 | |||||
"{ObjDir}pfr.c.o" \xB6 | |||||
"{ObjDir}psaux.c.o" \xB6 | |||||
"{ObjDir}pshinter.c.o" \xB6 | |||||
"{ObjDir}psmodule.c.o" \xB6 | |||||
"{ObjDir}raster.c.o" \xB6 | |||||
"{ObjDir}sfnt.c.o" \xB6 | |||||
"{ObjDir}smooth.c.o" \xB6 | |||||
"{ObjDir}truetype.c.o" \xB6 | |||||
"{ObjDir}type1.c.o" \xB6 | |||||
"{ObjDir}type42.c.o" \xB6 | |||||
"{ObjDir}winfnt.c.o" | |||||
### Libraries ### | |||||
LibFiles-68K = | |||||
### Default Rules ### | |||||
.c.o \xC4 .c {\xA5MondoBuild\xA5} | |||||
{C} {depDir}{default}.c -o {targDir}{default}.c.o {COptions} | |||||
### Build Rules ### | |||||
:builds:mac:ftbase.c \xC4\xC4 :src:base:ftbase.c | |||||
Duplicate :src:base:ftbase.c :builds:mac:ftbase.c | |||||
"{ObjDir}ftbase.c.o" \xC4\xC4 :builds:mac:ftbase.c | |||||
{C} :builds:mac:ftbase.c -o "{ObjDir}ftbase.c.o" \xB6 | |||||
-i :builds:mac: \xB6 | |||||
-i :src:base: \xB6 | |||||
{COptions} | |||||
FreeType.m68k_cfm \xC4\xC4 FreeType.m68k_cfm.o | |||||
FreeType.m68k_cfm.o \xC4\xC4 {ObjFiles-68K} {LibFiles-68K} {\xA5MondoBuild\xA5} | |||||
Lib \xB6 | |||||
-o {Targ} \xB6 | |||||
{ObjFiles-68K} \xB6 | |||||
{LibFiles-68K} \xB6 | |||||
{Sym-68K} \xB6 | |||||
-mf -d | |||||
### Required Dependencies ### | |||||
"{ObjDir}autofit.c.o" \xC4 :src:autofit:autofit.c | |||||
# "{ObjDir}ftbase.c.o" \xC4 :src:base:ftbase.c | |||||
"{ObjDir}ftbbox.c.o" \xC4 :src:base:ftbbox.c | |||||
"{ObjDir}ftbdf.c.o" \xC4 :src:base:ftbdf.c | |||||
"{ObjDir}ftbitmap.c.o" \xC4 :src:base:ftbitmap.c | |||||
"{ObjDir}ftdebug.c.o" \xC4 :src:base:ftdebug.c | |||||
"{ObjDir}ftfstype.c.o" \xC4 :src:base:ftfstype.c | |||||
"{ObjDir}ftglyph.c.o" \xC4 :src:base:ftglyph.c | |||||
"{ObjDir}ftgxval.c.o" \xC4 :src:base:ftgxval.c | |||||
"{ObjDir}ftinit.c.o" \xC4 :src:base:ftinit.c | |||||
"{ObjDir}ftmm.c.o" \xC4 :src:base:ftmm.c | |||||
"{ObjDir}ftotval.c.o" \xC4 :src:base:ftotval.c | |||||
"{ObjDir}ftpfr.c.o" \xC4 :src:base:ftpfr.c | |||||
"{ObjDir}ftstroke.c.o" \xC4 :src:base:ftstroke.c | |||||
"{ObjDir}ftsynth.c.o" \xC4 :src:base:ftsynth.c | |||||
"{ObjDir}ftsystem.c.o" \xC4 :src:base:ftsystem.c | |||||
"{ObjDir}fttype1.c.o" \xC4 :src:base:fttype1.c | |||||
"{ObjDir}ftwinfnt.c.o" \xC4 :src:base:ftwinfnt.c | |||||
"{ObjDir}ftcache.c.o" \xC4 :src:cache:ftcache.c | |||||
"{ObjDir}bdf.c.o" \xC4 :src:bdf:bdf.c | |||||
"{ObjDir}cff.c.o" \xC4 :src:cff:cff.c | |||||
"{ObjDir}type1cid.c.o" \xC4 :src:cid:type1cid.c | |||||
# "{ObjDir}gxvalid.c.o" \xC4 :src:gxvalid:gxvalid.c | |||||
"{ObjDir}ftgzip.c.o" \xC4 :src:gzip:ftgzip.c | |||||
"{ObjDir}ftbzip2.c.o" \xC4 :src:bzip2:ftbzip2.c | |||||
"{ObjDir}ftlzw.c.o" \xC4 :src:lzw:ftlzw.c | |||||
"{ObjDir}otvalid.c.o" \xC4 :src:otvalid:otvalid.c | |||||
"{ObjDir}pcf.c.o" \xC4 :src:pcf:pcf.c | |||||
"{ObjDir}pfr.c.o" \xC4 :src:pfr:pfr.c | |||||
"{ObjDir}psaux.c.o" \xC4 :src:psaux:psaux.c | |||||
"{ObjDir}pshinter.c.o" \xC4 :src:pshinter:pshinter.c | |||||
"{ObjDir}psmodule.c.o" \xC4 :src:psnames:psmodule.c | |||||
"{ObjDir}raster.c.o" \xC4 :src:raster:raster.c | |||||
"{ObjDir}sfnt.c.o" \xC4 :src:sfnt:sfnt.c | |||||
"{ObjDir}smooth.c.o" \xC4 :src:smooth:smooth.c | |||||
"{ObjDir}truetype.c.o" \xC4 :src:truetype:truetype.c | |||||
"{ObjDir}type1.c.o" \xC4 :src:type1:type1.c | |||||
"{ObjDir}type42.c.o" \xC4 :src:type42:type42.c | |||||
"{ObjDir}winfnt.c.o" \xC4 :src:winfonts:winfnt.c | |||||
### Optional Dependencies ### | |||||
### Build this target to generate "include file" dependencies. ### | |||||
Dependencies \xC4 $OutOfDate | |||||
MakeDepend \xB6 | |||||
-append {MAKEFILE} \xB6 | |||||
-ignore "{CIncludes}" \xB6 | |||||
-objdir "{ObjDir}" \xB6 | |||||
-objext .o \xB6 | |||||
{Includes} \xB6 | |||||
{SrcFiles} | |||||
@ -0,0 +1,208 @@ | |||||
# File: FreeType.m68k_far.make | |||||
# Target: FreeType.m68k_far | |||||
# Created: Tuesday, October 25, 2005 03:34:05 PM | |||||
MAKEFILE = FreeType.m68k_far.make | |||||
\xA5MondoBuild\xA5 = {MAKEFILE} # Make blank to avoid rebuilds when makefile is modified | |||||
ObjDir = :objs: | |||||
Includes = \xB6 | |||||
-includes unix \xB6 | |||||
-i :include: \xB6 | |||||
-i :src: \xB6 | |||||
-i :include:freetype:config: | |||||
Sym-68K = -sym off | |||||
COptions = \xB6 | |||||
-d FT_MACINTOSH=1 \xB6 | |||||
-d HAVE_FSSPEC=1 \xB6 | |||||
-d HAVE_FSREF=0 \xB6 | |||||
-d HAVE_QUICKDRAW_TOOLBOX=1 \xB6 | |||||
-d HAVE_QUICKDRAW_CARBON=0 \xB6 | |||||
-d HAVE_ATS=0 \xB6 | |||||
-d FT2_BUILD_LIBRARY \xB6 | |||||
-d FT_CONFIG_CONFIG_H="<ftconfig.h>" \xB6 | |||||
-d FT_CONFIG_MODULES_H="<ftmodule.h>" \xB6 | |||||
{Includes} {Sym-68K} -model far | |||||
### Source Files ### | |||||
SrcFiles = \xB6 | |||||
:src:autofit:autofit.c \xB6 | |||||
:builds:mac:ftbase.c \xB6 | |||||
:src:base:ftbbox.c \xB6 | |||||
:src:base:ftbdf.c \xB6 | |||||
:src:base:ftbitmap.c \xB6 | |||||
:src:base:ftdebug.c \xB6 | |||||
:src:base:ftfstype.c \xB6 | |||||
:src:base:ftglyph.c \xB6 | |||||
:src:base:ftgxval.c \xB6 | |||||
:src:base:ftinit.c \xB6 | |||||
:src:base:ftmm.c \xB6 | |||||
:src:base:ftotval.c \xB6 | |||||
:src:base:ftpfr.c \xB6 | |||||
:src:base:ftstroke.c \xB6 | |||||
:src:base:ftsynth.c \xB6 | |||||
:src:base:ftsystem.c \xB6 | |||||
:src:base:fttype1.c \xB6 | |||||
:src:base:ftwinfnt.c \xB6 | |||||
:src:cache:ftcache.c \xB6 | |||||
:src:bdf:bdf.c \xB6 | |||||
:src:cff:cff.c \xB6 | |||||
:src:cid:type1cid.c \xB6 | |||||
:src:gxvalid:gxvalid.c \xB6 | |||||
:src:gzip:ftgzip.c \xB6 | |||||
:src:bzip2:ftbzip2.c \xB6 | |||||
:src:lzw:ftlzw.c \xB6 | |||||
:src:otvalid:otvalid.c \xB6 | |||||
:src:pcf:pcf.c \xB6 | |||||
:src:pfr:pfr.c \xB6 | |||||
:src:psaux:psaux.c \xB6 | |||||
:src:pshinter:pshinter.c \xB6 | |||||
:src:psnames:psmodule.c \xB6 | |||||
:src:raster:raster.c \xB6 | |||||
:src:sfnt:sfnt.c \xB6 | |||||
:src:smooth:smooth.c \xB6 | |||||
:src:truetype:truetype.c \xB6 | |||||
:src:type1:type1.c \xB6 | |||||
:src:type42:type42.c \xB6 | |||||
:src:winfonts:winfnt.c | |||||
### Object Files ### | |||||
ObjFiles-68K = \xB6 | |||||
"{ObjDir}autofit.c.o" \xB6 | |||||
"{ObjDir}ftbase.c.o" \xB6 | |||||
"{ObjDir}ftbbox.c.o" \xB6 | |||||
"{ObjDir}ftbdf.c.o" \xB6 | |||||
"{ObjDir}ftbitmap.c.o" \xB6 | |||||
"{ObjDir}ftdebug.c.o" \xB6 | |||||
"{ObjDir}ftfstype.c.o" \xB6 | |||||
"{ObjDir}ftglyph.c.o" \xB6 | |||||
"{ObjDir}ftgxval.c.o" \xB6 | |||||
"{ObjDir}ftinit.c.o" \xB6 | |||||
"{ObjDir}ftmm.c.o" \xB6 | |||||
"{ObjDir}ftotval.c.o" \xB6 | |||||
"{ObjDir}ftpfr.c.o" \xB6 | |||||
"{ObjDir}ftstroke.c.o" \xB6 | |||||
"{ObjDir}ftsynth.c.o" \xB6 | |||||
"{ObjDir}ftsystem.c.o" \xB6 | |||||
"{ObjDir}fttype1.c.o" \xB6 | |||||
"{ObjDir}ftwinfnt.c.o" \xB6 | |||||
"{ObjDir}ftcache.c.o" \xB6 | |||||
"{ObjDir}bdf.c.o" \xB6 | |||||
"{ObjDir}cff.c.o" \xB6 | |||||
"{ObjDir}type1cid.c.o" \xB6 | |||||
"{ObjDir}gxvalid.c.o" \xB6 | |||||
"{ObjDir}ftgzip.c.o" \xB6 | |||||
"{ObjDir}ftbzip2.c.o" \xB6 | |||||
"{ObjDir}ftlzw.c.o" \xB6 | |||||
"{ObjDir}otvalid.c.o" \xB6 | |||||
"{ObjDir}pcf.c.o" \xB6 | |||||
"{ObjDir}pfr.c.o" \xB6 | |||||
"{ObjDir}psaux.c.o" \xB6 | |||||
"{ObjDir}pshinter.c.o" \xB6 | |||||
"{ObjDir}psmodule.c.o" \xB6 | |||||
"{ObjDir}raster.c.o" \xB6 | |||||
"{ObjDir}sfnt.c.o" \xB6 | |||||
"{ObjDir}smooth.c.o" \xB6 | |||||
"{ObjDir}truetype.c.o" \xB6 | |||||
"{ObjDir}type1.c.o" \xB6 | |||||
"{ObjDir}type42.c.o" \xB6 | |||||
"{ObjDir}winfnt.c.o" | |||||
### Libraries ### | |||||
LibFiles-68K = | |||||
### Default Rules ### | |||||
.c.o \xC4 .c {\xA5MondoBuild\xA5} | |||||
{C} {depDir}{default}.c -o {targDir}{default}.c.o {COptions} \xB6 | |||||
-ansi strict | |||||
### Build Rules ### | |||||
:builds:mac:ftbase.c \xC4\xC4 :src:base:ftbase.c | |||||
Duplicate :src:base:ftbase.c :builds:mac:ftbase.c | |||||
"{ObjDir}ftbase.c.o" \xC4\xC4 :builds:mac:ftbase.c | |||||
{C} :builds:mac:ftbase.c -o "{ObjDir}ftbase.c.o" \xB6 | |||||
-i :builds:mac: \xB6 | |||||
-i :src:base: \xB6 | |||||
{COptions} | |||||
FreeType.m68k_far \xC4\xC4 FreeType.m68k_far.o | |||||
FreeType.m68k_far.o \xC4\xC4 {ObjFiles-68K} {LibFiles-68K} {\xA5MondoBuild\xA5} | |||||
Lib \xB6 | |||||
-o {Targ} \xB6 | |||||
{ObjFiles-68K} \xB6 | |||||
{LibFiles-68K} \xB6 | |||||
{Sym-68K} \xB6 | |||||
-mf -d | |||||
### Required Dependencies ### | |||||
"{ObjDir}autofit.c.o" \xC4 :src:autofit:autofit.c | |||||
# "{ObjDir}ftbase.c.o" \xC4 :src:base:ftbase.c | |||||
"{ObjDir}ftbbox.c.o" \xC4 :src:base:ftbbox.c | |||||
"{ObjDir}ftbdf.c.o" \xC4 :src:base:ftbdf.c | |||||
"{ObjDir}ftbitmap.c.o" \xC4 :src:base:ftbitmap.c | |||||
"{ObjDir}ftdebug.c.o" \xC4 :src:base:ftdebug.c | |||||
"{ObjDir}ftfstype.c.o" \xC4 :src:base:ftfstype.c | |||||
"{ObjDir}ftglyph.c.o" \xC4 :src:base:ftglyph.c | |||||
"{ObjDir}ftgxval.c.o" \xC4 :src:base:ftgxval.c | |||||
"{ObjDir}ftinit.c.o" \xC4 :src:base:ftinit.c | |||||
"{ObjDir}ftmm.c.o" \xC4 :src:base:ftmm.c | |||||
"{ObjDir}ftotval.c.o" \xC4 :src:base:ftotval.c | |||||
"{ObjDir}ftpfr.c.o" \xC4 :src:base:ftpfr.c | |||||
"{ObjDir}ftstroke.c.o" \xC4 :src:base:ftstroke.c | |||||
"{ObjDir}ftsynth.c.o" \xC4 :src:base:ftsynth.c | |||||
"{ObjDir}ftsystem.c.o" \xC4 :src:base:ftsystem.c | |||||
"{ObjDir}fttype1.c.o" \xC4 :src:base:fttype1.c | |||||
"{ObjDir}ftwinfnt.c.o" \xC4 :src:base:ftwinfnt.c | |||||
"{ObjDir}ftcache.c.o" \xC4 :src:cache:ftcache.c | |||||
"{ObjDir}bdf.c.o" \xC4 :src:bdf:bdf.c | |||||
"{ObjDir}cff.c.o" \xC4 :src:cff:cff.c | |||||
"{ObjDir}type1cid.c.o" \xC4 :src:cid:type1cid.c | |||||
"{ObjDir}gxvalid.c.o" \xC4 :src:gxvalid:gxvalid.c | |||||
"{ObjDir}ftgzip.c.o" \xC4 :src:gzip:ftgzip.c | |||||
"{ObjDir}ftbzip2.c.o" \xC4 :src:bzip2:ftbzip2.c | |||||
"{ObjDir}ftlzw.c.o" \xC4 :src:lzw:ftlzw.c | |||||
"{ObjDir}otvalid.c.o" \xC4 :src:otvalid:otvalid.c | |||||
"{ObjDir}pcf.c.o" \xC4 :src:pcf:pcf.c | |||||
"{ObjDir}pfr.c.o" \xC4 :src:pfr:pfr.c | |||||
"{ObjDir}psaux.c.o" \xC4 :src:psaux:psaux.c | |||||
"{ObjDir}pshinter.c.o" \xC4 :src:pshinter:pshinter.c | |||||
"{ObjDir}psmodule.c.o" \xC4 :src:psnames:psmodule.c | |||||
"{ObjDir}raster.c.o" \xC4 :src:raster:raster.c | |||||
"{ObjDir}sfnt.c.o" \xC4 :src:sfnt:sfnt.c | |||||
"{ObjDir}smooth.c.o" \xC4 :src:smooth:smooth.c | |||||
"{ObjDir}truetype.c.o" \xC4 :src:truetype:truetype.c | |||||
"{ObjDir}type1.c.o" \xC4 :src:type1:type1.c | |||||
"{ObjDir}type42.c.o" \xC4 :src:type42:type42.c | |||||
"{ObjDir}winfnt.c.o" \xC4 :src:winfonts:winfnt.c | |||||
### Optional Dependencies ### | |||||
### Build this target to generate "include file" dependencies. ### | |||||
Dependencies \xC4 $OutOfDate | |||||
MakeDepend \xB6 | |||||
-append {MAKEFILE} \xB6 | |||||
-ignore "{CIncludes}" \xB6 | |||||
-objdir "{ObjDir}" \xB6 | |||||
-objext .o \xB6 | |||||
{Includes} \xB6 | |||||
{SrcFiles} | |||||
@ -0,0 +1,212 @@ | |||||
# File: FreeType.ppc_carbon.make | |||||
# Target: FreeType.ppc_carbon | |||||
# Created: Friday, October 28, 2005 03:40:06 PM | |||||
MAKEFILE = FreeType.ppc_carbon.make | |||||
\xA5MondoBuild\xA5 = {MAKEFILE} # Make blank to avoid rebuilds when makefile is modified | |||||
ObjDir = :objs: | |||||
Includes = \xB6 | |||||
-ansi strict \xB6 | |||||
-includes unix \xB6 | |||||
-i :include: \xB6 | |||||
-i :src: \xB6 | |||||
-i :include:freetype:config: | |||||
Sym-PPC = -sym off | |||||
PPCCOptions = \xB6 | |||||
-d FT_MACINTOSH=1 \xB6 | |||||
-d HAVE_FSSPEC=1 \xB6 | |||||
-d HAVE_FSREF=1 \xB6 | |||||
-d HAVE_QUICKDRAW_TOOLBOX=1 \xB6 | |||||
-d HAVE_QUICKDRAW_CARBON=1 \xB6 | |||||
-d HAVE_ATS=0 \xB6 | |||||
-d FT2_BUILD_LIBRARY \xB6 | |||||
-d FT_CONFIG_CONFIG_H="<ftconfig.h>" \xB6 | |||||
-d FT_CONFIG_MODULES_H="<ftmodule.h>" \xB6 | |||||
{Includes} {Sym-PPC} -d TARGET_API_MAC_CARBON=1 | |||||
### Source Files ### | |||||
SrcFiles = \xB6 | |||||
:src:autofit:autofit.c \xB6 | |||||
:builds:mac:ftbase.c \xB6 | |||||
:src:base:ftbbox.c \xB6 | |||||
:src:base:ftbdf.c \xB6 | |||||
:src:base:ftbitmap.c \xB6 | |||||
:src:base:ftdebug.c \xB6 | |||||
:src:base:ftfstype.c \xB6 | |||||
:src:base:ftglyph.c \xB6 | |||||
:src:base:ftgxval.c \xB6 | |||||
:src:base:ftinit.c \xB6 | |||||
:src:base:ftmm.c \xB6 | |||||
:src:base:ftotval.c \xB6 | |||||
:src:base:ftpfr.c \xB6 | |||||
:src:base:ftstroke.c \xB6 | |||||
:src:base:ftsynth.c \xB6 | |||||
:src:base:ftsystem.c \xB6 | |||||
:src:base:fttype1.c \xB6 | |||||
:src:base:ftwinfnt.c \xB6 | |||||
:src:cache:ftcache.c \xB6 | |||||
:src:bdf:bdf.c \xB6 | |||||
:src:cff:cff.c \xB6 | |||||
:src:cid:type1cid.c \xB6 | |||||
:src:gxvalid:gxvalid.c \xB6 | |||||
:src:gzip:ftgzip.c \xB6 | |||||
:src:bzip2:ftbzip2.c \xB6 | |||||
:src:lzw:ftlzw.c \xB6 | |||||
:src:otvalid:otvalid.c \xB6 | |||||
:src:pcf:pcf.c \xB6 | |||||
:src:pfr:pfr.c \xB6 | |||||
:src:psaux:psaux.c \xB6 | |||||
:src:pshinter:pshinter.c \xB6 | |||||
:src:psnames:psmodule.c \xB6 | |||||
:src:raster:raster.c \xB6 | |||||
:src:sfnt:sfnt.c \xB6 | |||||
:src:smooth:smooth.c \xB6 | |||||
:src:truetype:truetype.c \xB6 | |||||
:src:type1:type1.c \xB6 | |||||
:src:type42:type42.c \xB6 | |||||
:src:winfonts:winfnt.c | |||||
### Object Files ### | |||||
ObjFiles-PPC = \xB6 | |||||
"{ObjDir}autofit.c.x" \xB6 | |||||
"{ObjDir}ftbase.c.x" \xB6 | |||||
"{ObjDir}ftbbox.c.x" \xB6 | |||||
"{ObjDir}ftbdf.c.x" \xB6 | |||||
"{ObjDir}ftbitmap.c.x" \xB6 | |||||
"{ObjDir}ftdebug.c.x" \xB6 | |||||
"{ObjDir}ftfstype.c.x" \xB6 | |||||
"{ObjDir}ftglyph.c.x" \xB6 | |||||
"{ObjDir}ftgxval.c.x" \xB6 | |||||
"{ObjDir}ftinit.c.x" \xB6 | |||||
"{ObjDir}ftmm.c.x" \xB6 | |||||
"{ObjDir}ftotval.c.x" \xB6 | |||||
"{ObjDir}ftpfr.c.x" \xB6 | |||||
"{ObjDir}ftstroke.c.x" \xB6 | |||||
"{ObjDir}ftsynth.c.x" \xB6 | |||||
"{ObjDir}ftsystem.c.x" \xB6 | |||||
"{ObjDir}fttype1.c.x" \xB6 | |||||
"{ObjDir}ftwinfnt.c.x" \xB6 | |||||
"{ObjDir}ftcache.c.x" \xB6 | |||||
"{ObjDir}bdf.c.x" \xB6 | |||||
"{ObjDir}cff.c.x" \xB6 | |||||
"{ObjDir}type1cid.c.x" \xB6 | |||||
"{ObjDir}gxvalid.c.x" \xB6 | |||||
"{ObjDir}ftgzip.c.x" \xB6 | |||||
"{ObjDir}ftbzip2.c.x" \xB6 | |||||
"{ObjDir}ftlzw.c.x" \xB6 | |||||
"{ObjDir}otvalid.c.x" \xB6 | |||||
"{ObjDir}pcf.c.x" \xB6 | |||||
"{ObjDir}pfr.c.x" \xB6 | |||||
"{ObjDir}psaux.c.x" \xB6 | |||||
"{ObjDir}pshinter.c.x" \xB6 | |||||
"{ObjDir}psmodule.c.x" \xB6 | |||||
"{ObjDir}raster.c.x" \xB6 | |||||
"{ObjDir}sfnt.c.x" \xB6 | |||||
"{ObjDir}smooth.c.x" \xB6 | |||||
"{ObjDir}truetype.c.x" \xB6 | |||||
"{ObjDir}type1.c.x" \xB6 | |||||
"{ObjDir}type42.c.x" \xB6 | |||||
"{ObjDir}winfnt.c.x" | |||||
### Libraries ### | |||||
LibFiles-PPC = | |||||
### Default Rules ### | |||||
.c.x \xC4 .c {\xA5MondoBuild\xA5} | |||||
{PPCC} {depDir}{default}.c -o {targDir}{default}.c.x {PPCCOptions} | |||||
### Build Rules ### | |||||
:builds:mac:ftbase.c \xC4\xC4 :src:base:ftbase.c | |||||
Duplicate :src:base:ftbase.c :builds:mac:ftbase.c | |||||
"{ObjDir}ftbase.c.x" \xC4\xC4 :builds:mac:ftbase.c | |||||
{PPCC} :builds:mac:ftbase.c -o {ObjDir}ftbase.c.x \xB6 | |||||
-i :builds:mac: \xB6 | |||||
-i :src:base: \xB6 | |||||
{PPCCOptions} | |||||
FreeType.ppc_carbon \xC4\xC4 FreeType.ppc_carbon.o | |||||
FreeType.ppc_carbon.o \xC4\xC4 {ObjFiles-PPC} {LibFiles-PPC} {\xA5MondoBuild\xA5} | |||||
PPCLink \xB6 | |||||
-o {Targ} \xB6 | |||||
{ObjFiles-PPC} \xB6 | |||||
{LibFiles-PPC} \xB6 | |||||
{Sym-PPC} \xB6 | |||||
-mf -d \xB6 | |||||
-t 'XCOF' \xB6 | |||||
-c 'MPS ' \xB6 | |||||
-xm l | |||||
### Required Dependencies ### | |||||
"{ObjDir}autofit.c.x" \xC4 :src:autofit:autofit.c | |||||
# "{ObjDir}ftbase.c.x" \xC4 :builds:mac:ftbase.c | |||||
"{ObjDir}ftbbox.c.x" \xC4 :src:base:ftbbox.c | |||||
"{ObjDir}ftbdf.c.x" \xC4 :src:base:ftbdf.c | |||||
"{ObjDir}ftbitmap.c.x" \xC4 :src:base:ftbitmap.c | |||||
"{ObjDir}ftdebug.c.x" \xC4 :src:base:ftdebug.c | |||||
"{ObjDir}ftfstype.c.x" \xC4 :src:base:ftfstype.c | |||||
"{ObjDir}ftglyph.c.x" \xC4 :src:base:ftglyph.c | |||||
"{ObjDir}ftgxval.c.x" \xC4 :src:base:ftgxval.c | |||||
"{ObjDir}ftinit.c.x" \xC4 :src:base:ftinit.c | |||||
"{ObjDir}ftmm.c.x" \xC4 :src:base:ftmm.c | |||||
"{ObjDir}ftotval.c.x" \xC4 :src:base:ftotval.c | |||||
"{ObjDir}ftpfr.c.x" \xC4 :src:base:ftpfr.c | |||||
"{ObjDir}ftstroke.c.x" \xC4 :src:base:ftstroke.c | |||||
"{ObjDir}ftsynth.c.x" \xC4 :src:base:ftsynth.c | |||||
"{ObjDir}ftsystem.c.x" \xC4 :src:base:ftsystem.c | |||||
"{ObjDir}fttype1.c.x" \xC4 :src:base:fttype1.c | |||||
"{ObjDir}ftwinfnt.c.x" \xC4 :src:base:ftwinfnt.c | |||||
"{ObjDir}ftcache.c.x" \xC4 :src:cache:ftcache.c | |||||
"{ObjDir}bdf.c.x" \xC4 :src:bdf:bdf.c | |||||
"{ObjDir}cff.c.x" \xC4 :src:cff:cff.c | |||||
"{ObjDir}type1cid.c.x" \xC4 :src:cid:type1cid.c | |||||
"{ObjDir}gxvalid.c.x" \xC4 :src:gxvalid:gxvalid.c | |||||
"{ObjDir}ftgzip.c.x" \xC4 :src:gzip:ftgzip.c | |||||
"{ObjDir}ftbzip2.c.x" \xC4 :src:bzip2:ftbzip2.c | |||||
"{ObjDir}ftlzw.c.x" \xC4 :src:lzw:ftlzw.c | |||||
"{ObjDir}otvalid.c.x" \xC4 :src:otvalid:otvalid.c | |||||
"{ObjDir}pcf.c.x" \xC4 :src:pcf:pcf.c | |||||
"{ObjDir}pfr.c.x" \xC4 :src:pfr:pfr.c | |||||
"{ObjDir}psaux.c.x" \xC4 :src:psaux:psaux.c | |||||
"{ObjDir}pshinter.c.x" \xC4 :src:pshinter:pshinter.c | |||||
"{ObjDir}psmodule.c.x" \xC4 :src:psnames:psmodule.c | |||||
"{ObjDir}raster.c.x" \xC4 :src:raster:raster.c | |||||
"{ObjDir}sfnt.c.x" \xC4 :src:sfnt:sfnt.c | |||||
"{ObjDir}smooth.c.x" \xC4 :src:smooth:smooth.c | |||||
"{ObjDir}truetype.c.x" \xC4 :src:truetype:truetype.c | |||||
"{ObjDir}type1.c.x" \xC4 :src:type1:type1.c | |||||
"{ObjDir}type42.c.x" \xC4 :src:type42:type42.c | |||||
"{ObjDir}winfnt.c.x" \xC4 :src:winfonts:winfnt.c | |||||
### Optional Dependencies ### | |||||
### Build this target to generate "include file" dependencies. ### | |||||
Dependencies \xC4 $OutOfDate | |||||
MakeDepend \xB6 | |||||
-append {MAKEFILE} \xB6 | |||||
-ignore "{CIncludes}" \xB6 | |||||
-objdir "{ObjDir}" \xB6 | |||||
-objext .x \xB6 | |||||
{Includes} \xB6 | |||||
{SrcFiles} | |||||
@ -0,0 +1,213 @@ | |||||
# File: FreeType.ppc_classic.make | |||||
# Target: FreeType.ppc_classic | |||||
# Created: Thursday, October 27, 2005 07:42:43 PM | |||||
MAKEFILE = FreeType.ppc_classic.make | |||||
\xA5MondoBuild\xA5 = {MAKEFILE} # Make blank to avoid rebuilds when makefile is modified | |||||
ObjDir = :objs: | |||||
Includes = \xB6 | |||||
-ansi strict \xB6 | |||||
-includes unix \xB6 | |||||
-i :include: \xB6 | |||||
-i :src: \xB6 | |||||
-i :include:freetype:config: | |||||
Sym-PPC = -sym off | |||||
PPCCOptions = \xB6 | |||||
-d FT_MACINTOSH=1 \xB6 | |||||
-d HAVE_FSSPEC=1 \xB6 | |||||
-d HAVE_FSREF=0 \xB6 | |||||
-d HAVE_QUICKDRAW_TOOLBOX=1 \xB6 | |||||
-d HAVE_QUICKDRAW_CARBON=0 \xB6 | |||||
-d HAVE_ATS=0 \xB6 | |||||
-d FT2_BUILD_LIBRARY \xB6 | |||||
-d FT_CONFIG_CONFIG_H="<ftconfig.h>" \xB6 | |||||
-d FT_CONFIG_MODULES_H="<ftmodule.h>" \xB6 | |||||
{Includes} {Sym-PPC} | |||||
### Source Files ### | |||||
SrcFiles = \xB6 | |||||
:src:autofit:autofit.c \xB6 | |||||
:builds:mac:ftbase.c \xB6 | |||||
:src:base:ftbbox.c \xB6 | |||||
:src:base:ftbdf.c \xB6 | |||||
:src:base:ftbitmap.c \xB6 | |||||
:src:base:ftdebug.c \xB6 | |||||
:src:base:ftfstype.c \xB6 | |||||
:src:base:ftglyph.c \xB6 | |||||
:src:base:ftgxval.c \xB6 | |||||
:src:base:ftinit.c \xB6 | |||||
:src:base:ftmm.c \xB6 | |||||
:src:base:ftotval.c \xB6 | |||||
:src:base:ftpfr.c \xB6 | |||||
:src:base:ftstroke.c \xB6 | |||||
:src:base:ftsynth.c \xB6 | |||||
:src:base:ftsystem.c \xB6 | |||||
:src:base:fttype1.c \xB6 | |||||
:src:base:ftwinfnt.c \xB6 | |||||
:src:cache:ftcache.c \xB6 | |||||
:src:bdf:bdf.c \xB6 | |||||
:src:cff:cff.c \xB6 | |||||
:src:cid:type1cid.c \xB6 | |||||
:src:gxvalid:gxvalid.c \xB6 | |||||
:src:gzip:ftgzip.c \xB6 | |||||
:src:bzip2:ftbzip2.c \xB6 | |||||
:src:lzw:ftlzw.c \xB6 | |||||
:src:otvalid:otvalid.c \xB6 | |||||
:src:pcf:pcf.c \xB6 | |||||
:src:pfr:pfr.c \xB6 | |||||
:src:psaux:psaux.c \xB6 | |||||
:src:pshinter:pshinter.c \xB6 | |||||
:src:psnames:psmodule.c \xB6 | |||||
:src:raster:raster.c \xB6 | |||||
:src:sfnt:sfnt.c \xB6 | |||||
:src:smooth:smooth.c \xB6 | |||||
:src:truetype:truetype.c \xB6 | |||||
:src:type1:type1.c \xB6 | |||||
:src:type42:type42.c \xB6 | |||||
:src:winfonts:winfnt.c | |||||
### Object Files ### | |||||
ObjFiles-PPC = \xB6 | |||||
"{ObjDir}autofit.c.x" \xB6 | |||||
"{ObjDir}ftbase.c.x" \xB6 | |||||
"{ObjDir}ftbbox.c.x" \xB6 | |||||
"{ObjDir}ftbdf.c.x" \xB6 | |||||
"{ObjDir}ftbitmap.c.x" \xB6 | |||||
"{ObjDir}ftdebug.c.x" \xB6 | |||||
"{ObjDir}ftfstype.c.x" \xB6 | |||||
"{ObjDir}ftglyph.c.x" \xB6 | |||||
"{ObjDir}ftgxval.c.x" \xB6 | |||||
"{ObjDir}ftinit.c.x" \xB6 | |||||
"{ObjDir}ftmm.c.x" \xB6 | |||||
"{ObjDir}ftotval.c.x" \xB6 | |||||
"{ObjDir}ftpfr.c.x" \xB6 | |||||
"{ObjDir}ftstroke.c.x" \xB6 | |||||
"{ObjDir}ftsynth.c.x" \xB6 | |||||
"{ObjDir}ftsystem.c.x" \xB6 | |||||
"{ObjDir}fttype1.c.x" \xB6 | |||||
"{ObjDir}ftwinfnt.c.x" \xB6 | |||||
"{ObjDir}ftcache.c.x" \xB6 | |||||
"{ObjDir}bdf.c.x" \xB6 | |||||
"{ObjDir}cff.c.x" \xB6 | |||||
"{ObjDir}type1cid.c.x" \xB6 | |||||
"{ObjDir}gxvalid.c.x" \xB6 | |||||
"{ObjDir}ftgzip.c.x" \xB6 | |||||
"{ObjDir}ftbzip2.c.x" \xB6 | |||||
"{ObjDir}ftlzw.c.x" \xB6 | |||||
"{ObjDir}otvalid.c.x" \xB6 | |||||
"{ObjDir}pcf.c.x" \xB6 | |||||
"{ObjDir}pfr.c.x" \xB6 | |||||
"{ObjDir}psaux.c.x" \xB6 | |||||
"{ObjDir}pshinter.c.x" \xB6 | |||||
"{ObjDir}psmodule.c.x" \xB6 | |||||
"{ObjDir}raster.c.x" \xB6 | |||||
"{ObjDir}sfnt.c.x" \xB6 | |||||
"{ObjDir}smooth.c.x" \xB6 | |||||
"{ObjDir}truetype.c.x" \xB6 | |||||
"{ObjDir}type1.c.x" \xB6 | |||||
"{ObjDir}type42.c.x" \xB6 | |||||
"{ObjDir}winfnt.c.x" | |||||
### Libraries ### | |||||
LibFiles-PPC = | |||||
### Default Rules ### | |||||
.c.x \xC4 .c {\xA5MondoBuild\xA5} | |||||
{PPCC} {depDir}{default}.c -o {targDir}{default}.c.x {PPCCOptions} | |||||
### Build Rules ### | |||||
:builds:mac:ftbase.c \xC4\xC4 :src:base:ftbase.c | |||||
Duplicate :src:base:ftbase.c :builds:mac:ftbase.c | |||||
"{ObjDir}ftbase.c.x" \xC4\xC4 :builds:mac:ftbase.c | |||||
{PPCC} :builds:mac:ftbase.c -o "{ObjDir}ftbase.c.x" \xB6 | |||||
-i :builds:mac: \xB6 | |||||
-i :src:base: \xB6 | |||||
{PPCCOptions} | |||||
FreeType.ppc_classic \xC4\xC4 FreeType.ppc_classic.o | |||||
FreeType.ppc_classic.o \xC4\xC4 {ObjFiles-PPC} {LibFiles-PPC} {\xA5MondoBuild\xA5} | |||||
PPCLink \xB6 | |||||
-o {Targ} \xB6 | |||||
{ObjFiles-PPC} \xB6 | |||||
{LibFiles-PPC} \xB6 | |||||
{Sym-PPC} \xB6 | |||||
-mf -d \xB6 | |||||
-t 'XCOF' \xB6 | |||||
-c 'MPS ' \xB6 | |||||
-xm l | |||||
### Required Dependencies ### | |||||
"{ObjDir}autofit.c.x" \xC4 :src:autofit:autofit.c | |||||
# "{ObjDir}ftbase.c.x" \xC4 :builds:mac:ftbase.c | |||||
"{ObjDir}ftbbox.c.x" \xC4 :src:base:ftbbox.c | |||||
"{ObjDir}ftbdf.c.x" \xC4 :src:base:ftbdf.c | |||||
"{ObjDir}ftbitmap.c.x" \xC4 :src:base:ftbitmap.c | |||||
"{ObjDir}ftdebug.c.x" \xC4 :src:base:ftdebug.c | |||||
"{ObjDir}ftfstype.c.x" \xC4 :src:base:ftfstype.c | |||||
"{ObjDir}ftglyph.c.x" \xC4 :src:base:ftglyph.c | |||||
"{ObjDir}ftgxval.c.x" \xC4 :src:base:ftgxval.c | |||||
"{ObjDir}ftinit.c.x" \xC4 :src:base:ftinit.c | |||||
"{ObjDir}ftmm.c.x" \xC4 :src:base:ftmm.c | |||||
"{ObjDir}ftotval.c.x" \xC4 :src:base:ftotval.c | |||||
"{ObjDir}ftpfr.c.x" \xC4 :src:base:ftpfr.c | |||||
"{ObjDir}ftstroke.c.x" \xC4 :src:base:ftstroke.c | |||||
"{ObjDir}ftsynth.c.x" \xC4 :src:base:ftsynth.c | |||||
"{ObjDir}ftsystem.c.x" \xC4 :src:base:ftsystem.c | |||||
"{ObjDir}fttype1.c.x" \xC4 :src:base:fttype1.c | |||||
"{ObjDir}ftwinfnt.c.x" \xC4 :src:base:ftwinfnt.c | |||||
"{ObjDir}ftcache.c.x" \xC4 :src:cache:ftcache.c | |||||
"{ObjDir}bdf.c.x" \xC4 :src:bdf:bdf.c | |||||
"{ObjDir}cff.c.x" \xC4 :src:cff:cff.c | |||||
"{ObjDir}type1cid.c.x" \xC4 :src:cid:type1cid.c | |||||
"{ObjDir}gxvalid.c.x" \xC4 :src:gxvalid:gxvalid.c | |||||
"{ObjDir}ftgzip.c.x" \xC4 :src:gzip:ftgzip.c | |||||
"{ObjDir}ftbzip2.c.x" \xC4 :src:bzip2:ftbzip2.c | |||||
"{ObjDir}ftlzw.c.x" \xC4 :src:lzw:ftlzw.c | |||||
"{ObjDir}otvalid.c.x" \xC4 :src:otvalid:otvalid.c | |||||
"{ObjDir}pcf.c.x" \xC4 :src:pcf:pcf.c | |||||
"{ObjDir}pfr.c.x" \xC4 :src:pfr:pfr.c | |||||
"{ObjDir}psaux.c.x" \xC4 :src:psaux:psaux.c | |||||
"{ObjDir}pshinter.c.x" \xC4 :src:pshinter:pshinter.c | |||||
"{ObjDir}psmodule.c.x" \xC4 :src:psnames:psmodule.c | |||||
"{ObjDir}raster.c.x" \xC4 :src:raster:raster.c | |||||
"{ObjDir}sfnt.c.x" \xC4 :src:sfnt:sfnt.c | |||||
"{ObjDir}smooth.c.x" \xC4 :src:smooth:smooth.c | |||||
"{ObjDir}truetype.c.x" \xC4 :src:truetype:truetype.c | |||||
"{ObjDir}type1.c.x" \xC4 :src:type1:type1.c | |||||
"{ObjDir}type42.c.x" \xC4 :src:type42:type42.c | |||||
"{ObjDir}winfnt.c.x" \xC4 :src:winfonts:winfnt.c | |||||
### Optional Dependencies ### | |||||
### Build this target to generate "include file" dependencies. ### | |||||
Dependencies \xC4 $OutOfDate | |||||
MakeDepend \xB6 | |||||
-append {MAKEFILE} \xB6 | |||||
-ignore "{CIncludes}" \xB6 | |||||
-objdir "{ObjDir}" \xB6 | |||||
-objext .x \xB6 | |||||
{Includes} \xB6 | |||||
{SrcFiles} | |||||
@ -0,0 +1,401 @@ | |||||
This folder contains | |||||
* Makefile skeletons for Apple MPW (Macintosh's Programmer's Workshop) | |||||
* Python script to generate MPW makefile from skeleton | |||||
* Metrowerks CodeWarrior 9.0 project file in XML format | |||||
------------------------------------------------------------ | |||||
1. What is this | |||||
--------------- | |||||
Files in this directory are designed to build FreeType | |||||
running on classic MacOS. To build FreeType running on | |||||
Mac OS X, build as the system is UNIX. | |||||
However, Mac OS X is most useful to manipulate files in | |||||
vanilla FreeType to fit classic MacOS. | |||||
The information about MacOS specific API is written in | |||||
appendix of this document. | |||||
2. Requirement | |||||
-------------- | |||||
You can use MPW: a free-charged developer environment | |||||
by Apple, or CodeWarrior: a commercial developer | |||||
environment by Metrowerks. GCC for MPW and Symantec | |||||
"Think C" are not tested at present. | |||||
2-1. Apple MPW | |||||
-------------- | |||||
Following C compilers are tested: | |||||
m68k target: Apple SC 8.9.0d3e1 | |||||
ppc target: Apple MrC 5.0.0d3c1 | |||||
The final MPW-GM (official release on 1999/Dec) is too | |||||
old and cannot compile FreeType, because bundled C | |||||
compilers cannot search header files in sub directories. | |||||
Updating by the final MPW-PR (pre-release on 2001/Feb) | |||||
is required. | |||||
Required files are downloadable from: | |||||
http://macintoshgarden.org/apps/macintosh-programmers-workshop | |||||
Also you can find documents how to update by MPW-PR. | |||||
Python is required to restore MPW makefiles from the | |||||
skeletons. Python bundled to Mac OS X is enough. For | |||||
classic MacOS, MacPython is available: | |||||
https://homepages.cwi.nl/~jack/macpython/ | |||||
MPW requires all files are typed by resource fork. | |||||
ResEdit bundled to MPW is enough. In Mac OS X, | |||||
/Developer/Tools/SetFile of DevTool is useful to | |||||
manipulate from commandline. | |||||
2-2. Metrowerks CodeWarrior | |||||
--------------------------- | |||||
XML project file is generated and tested by | |||||
CodeWarrior 9.0. Older versions are not tested | |||||
at all. At present, static library for ppc target | |||||
is available in the project file. | |||||
3. How to build | |||||
--------------- | |||||
3-1. Apple MPW | |||||
-------------- | |||||
Detailed building procedure by Apple MPW is | |||||
described in following. | |||||
3-1-1. Generate MPW makefiles from the skeletons | |||||
------------------------------------------------ | |||||
Here are 4 skeletons for following targets are | |||||
included. | |||||
- FreeType.m68k_far.make.txt | |||||
Ancient 32bit binary executable format for | |||||
m68k MacOS: System 6, with 32bit addressing | |||||
mode (far-pointer-model) So-called "Toolbox" | |||||
API is used. | |||||
- FreeType.m68k_cfm.make.txt | |||||
CFM binary executable format for m68k MacOS: | |||||
System 7. So-called "Toolbox" API is used. | |||||
- FreeType.ppc_classic.make.txt | |||||
CFM binary executable format for ppc MacOS: | |||||
System 7, MacOS 8, MacOS 9. So-called "Toolbox" | |||||
API is used. | |||||
- FreeType.ppc_carbon.make.txt | |||||
CFM binary executable format for ppc MacOS: | |||||
MacOS 9. Carbon API is used. | |||||
At present, static library is only supported, | |||||
although targets except of m68k_far are capable | |||||
to use shared library. | |||||
MPW makefile syntax uses 8bit characters. To keep | |||||
from violating them during version control, here | |||||
we store skeletons in pure ASCII format. You must | |||||
generate MPW makefile by Python script ascii2mpw.py. | |||||
In Mac OS X terminal, you can convert as: | |||||
python builds/mac/ascii2mpw.py \ | |||||
< builds/mac/FreeType.m68k_far.make.txt \ | |||||
> FreeType.m68k_far.make | |||||
The skeletons are designed to use in the top | |||||
directory where there are builds, include, src etc. | |||||
You must name the generated MPW makefile by removing | |||||
".txt" from source skeleton name. | |||||
3-1-2. Add resource forks to related files | |||||
------------------------------------------ | |||||
MPW's Make and C compilers cannot recognize files | |||||
without resource fork. You have to add resource | |||||
fork to the files that MPW uses. In Mac OS X | |||||
terminal of the system, you can do as: | |||||
find . -name '*.[ch]' -exec \ | |||||
/Developer/Tools/SetFile -a l -c "MPS " -t TEXT \{\} \; | |||||
find . -name '*.make' -exec \ | |||||
/Developer/Tools/SetFile -a l -c "MPS " -t TEXT \{\} \; | |||||
3-1-3. Open MPW shell and build | |||||
------------------------------- | |||||
Open MPW shell and go to the top directory that | |||||
FreeType sources are extracted (MPW makefile must | |||||
be located in there), from "Set Directory" in | |||||
"Directory" menu. | |||||
Choose "Build" from "Build" menu, and type the | |||||
name of project by removing ".make" from MPW | |||||
makefile, as: FreeType.m68k_far | |||||
If building is successfully finished, you can find | |||||
built library in objs/ directory. | |||||
3-2. Metrowerks CodeWarrior | |||||
--------------------------- | |||||
Detailed building procedure by Metrowerks | |||||
CodeWarrior (CW) 9.0 is described in following. | |||||
3-2-1. Import XML project file | |||||
------------------------------ | |||||
CW XML project file is not ready for double- | |||||
click. Start CodeWarrior IDE, and choose | |||||
"Import project" in "File" menu. Choose XML | |||||
project file: builds/mac/ftlib.prj.xml. | |||||
In next, you will be asked where to save CW | |||||
native project file: you must choose | |||||
"builds/mac/ftlib.prj". The project file is | |||||
designed with relative path from there. After | |||||
CW native project file is generated, it is | |||||
automatically loaded, small project window | |||||
titled "ftlib.prj" is displayed. | |||||
3-2-2. Building | |||||
--------------- | |||||
Choose "Make" from "Project" menu. If building | |||||
is successfully finished, you can find built | |||||
library at objs/FreeTypeLib. | |||||
4. TODO | |||||
------- | |||||
4-1. All modules should be included | |||||
----------------------------------- | |||||
At present, MPW makefiles and CW project file are | |||||
just updated versions of these by Leonard. Some | |||||
modules are added after the last maintenance, they | |||||
are not included. | |||||
4-2. Working test with ftdemos | |||||
------------------------------ | |||||
At present, MPW makefiles and CW project file can | |||||
build FreeType for classic MacOS. But their working | |||||
behaviours are not tested at all. Building ftdemos | |||||
for classic MacOS and working test is required. | |||||
4-3. Porting Jam onto MPW | |||||
------------------------- | |||||
FreeType uses Jam (and FT-Jam) for unified cross- | |||||
platform building tool. At present, Jam is not ported | |||||
to MPW. To update classic MacOS support easily, | |||||
building by Jam is expected on MPW. | |||||
APPENDIX I | |||||
---------- | |||||
A-1. Framework dependencies | |||||
--------------------------- | |||||
src/base/ftmac.c adds two Mac-specific features to | |||||
FreeType. These features are based on MacOS libraries. | |||||
* accessing resource-fork font | |||||
The fonts for classic MacOS store their graphical data | |||||
in resource forks which cannot be accessed via ANSI C | |||||
functions. FreeType2 provides functions to handle such | |||||
resource fork fonts, they are based on File Manager | |||||
framework of MacOS. In addition, HFS and HFS+ file | |||||
system driver of Linux is supported. Following | |||||
functions are for this purpose. | |||||
FT_New_Face_From_Resource() | |||||
FT_New_Face_From_FSSpec() | |||||
FT_New_Face_From_FSRef() | |||||
* resolving font name to font file | |||||
The font menu of MacOS application prefers font name | |||||
written in FOND resource than sfnt resource. FreeType2 | |||||
provides functions to find font file by name in MacOS | |||||
application, they are based on QuickDraw Font Manager | |||||
and Apple Type Service framework of MacOS. | |||||
FT_GetFile_From_Mac_Name() | |||||
FT_GetFile_From_Mac_ATS_Name() | |||||
Working functions for each MacOS are summarized as | |||||
following. | |||||
upto MacOS 6: | |||||
not tested (you have to obtain MPW 2.x) | |||||
MacOS 7.x, 8.x, 9.x (without CarbonLib): | |||||
FT_GetFile_From_Mac_Name() | |||||
FT_New_Face_From_Resource() | |||||
FT_New_Face_From_FSSpec() | |||||
MacOS 9.x (with CarbonLib): | |||||
FT_GetFile_From_Mac_Name() | |||||
FT_New_Face_From_Resource() | |||||
FT_New_Face_From_FSSpec() | |||||
FT_New_Face_From_FSRef() | |||||
Mac OS X upto 10.4.x: | |||||
FT_GetFile_From_Mac_Name() deprecated | |||||
FT_New_Face_From_FSSpec() deprecated | |||||
FT_GetFile_From_Mac_ATS_Name() deprecated? | |||||
FT_New_Face_From_FSRef() | |||||
A-2. Deprecated Functions | |||||
------------------------- | |||||
A-2-1. FileManager | |||||
------------------ | |||||
For convenience to write MacOS application, ftmac.c | |||||
provides functions to specify a file by FSSpec and FSRef, | |||||
because the file identification pathname had ever been | |||||
unrecommended method in MacOS programming. | |||||
Toward to MacOS X 10.4 & 5, Carbon functions using FSSpec | |||||
datatype is noticed as deprecated, and recommended to | |||||
migrate to FSRef datatype. The big differences of FSRef | |||||
against FSSpec are explained in Apple TechNotes 2078. | |||||
https://developer.apple.com/library/archive/technotes/tn2078/ | |||||
- filename length: the max length of file | |||||
name of FSRef is 255 chars (it is limit of HFS+), | |||||
that of FSSpec is 31 chars (it is limit of HFS). | |||||
- filename encoding: FSSpec is localized by | |||||
legacy encoding for each language system, | |||||
FSRef is Unicode enabled. | |||||
A-2-2. FontManager | |||||
------------------ | |||||
Following functions receive QuickDraw fontname: | |||||
FT_GetFile_From_Mac_Name() | |||||
QuickDraw is deprecated and replaced by Quartz | |||||
since Mac OS X 10.4. They are still kept for | |||||
backward compatibility. By undefinition of | |||||
HAVE_QUICKDRAW in building, you can change these | |||||
functions to return FT_Err_Unimplemented always. | |||||
Replacement functions are added for migration. | |||||
FT_GetFile_From_Mac_ATS_Name() | |||||
They are usable on Mac OS X only. On older systems, | |||||
these functions return FT_Err_Unimplemented always. | |||||
The detailed incompatibilities and possibility | |||||
of FontManager emulation without QuickDraw is | |||||
explained in | |||||
http://gyvern.ipc.hiroshima-u.ac.jp/~mpsuzuki/ats_benchmark.html | |||||
A-3. Framework Availabilities | |||||
----------------------------- | |||||
The framework of MacOS are often revised, especially | |||||
when new format of binary executable is introduced. | |||||
Following table is the minimum version of frameworks | |||||
to use functions used in FreeType2. The table is | |||||
extracted from MPW header files for assembly language. | |||||
*** NOTE *** | |||||
The conditional definition of available data type | |||||
in MPW compiler is insufficient. You can compile | |||||
program using FSRef data type for older systems | |||||
(MacOS 7, 8) that don't know FSRef data type. | |||||
+-------------------+-----------------------------+ | |||||
CPU | mc680x0 | PowerPC | | |||||
+---------+---------+---------+---------+---------+ | |||||
Binary Executable Format | Classic | 68K-CFM | CFM | CFM | Mach-O | | |||||
+---------+---------+---------+---------+---------+ | |||||
Framework API | Toolbox | Toolbox | Toolbox | Carbon | Carbon | | |||||
+---------+---------+---------+---------+---------+ | |||||
+---------+---------+---------+---------+---------+ | |||||
| ?(*) |Interface|Interface|CarbonLib|Mac OS X | | |||||
| |Lib |Lib | | | | |||||
* Files.h +---------+---------+---------+---------+---------+ | |||||
PBGetFCBInfoSync() | o | 7.1- | 7.1- | 1.0- | o | | |||||
FSMakeFSSpec() | o | 7.1- | 7.1- | 1.0- | o | | |||||
FSGetForkCBInfo() | o | (**) | 9.0- | 1.0- | o | | |||||
FSpMakeFSRef() | o | (**) | 9.0- | 1.0- | o | | |||||
FSGetCatalogInfo() | o | (**) | 9.0- | 1.0- | -10.3 | | |||||
FSPathMakeRef() | x | x | x | 1.1- | -10.3 | | |||||
+---------+---------+---------+---------+---------+ | |||||
+---------+---------+---------+---------+---------+ | |||||
| ?(*) |Font |Font |CarbonLib|Mac OS X | | |||||
| |Manager |Manager | | | | |||||
* Fonts.h +---------+---------+---------+---------+---------+ | |||||
FMCreateFontFamilyIterator() | x | x | 9.0- | 1.0- | -10.3 | | |||||
FMDisposeFontFamilyIterator() | x | x | 9.0- | 1.0- | -10.3 | | |||||
FMGetNextFontFamily() | x | x | 9.0- | 1.0- | -10.3 | | |||||
FMGetFontFamilyName() | x | x | 9.0- | 1.0- | -10.3 | | |||||
FMCreateFontFamilyInstanceIterator() | x | x | 9.0- | 1.0- | -10.3 | | |||||
FMDisposeFontFamilyInstanceIterator() | x | x | 9.0- | 1.0- | -10.3 | | |||||
FMGetNextFontFamilyInstance() | x | x | 9.0- | 1.0- | -10.3 | | |||||
+---------+---------+---------+---------+---------+ | |||||
+---------+---------+---------+---------+---------+ | |||||
| - | - | - |CarbonLib|Mac OS X | | |||||
* ATSFont.h (***) +---------+---------+---------+---------+---------+ | |||||
ATSFontFindFromName() | x | x | x | x | o | | |||||
ATSFontGetFileSpecification() | x | x | x | x | o | | |||||
+---------+---------+---------+---------+---------+ | |||||
(*) | |||||
In the "Classic": the original binary executable | |||||
format, these framework functions are directly | |||||
transformed to MacOS system call. Therefore, the | |||||
exact availability should be checked by running | |||||
system. | |||||
(**) | |||||
InterfaceLib is bundled to MacOS and its version | |||||
is usually equal to MacOS. There's no separate | |||||
update for InterfaceLib. It is supposed that | |||||
there's no InterfaceLib 9.x for m68k platforms. | |||||
In fact, these functions are FSRef dependent. | |||||
(***) | |||||
ATSUI framework is available on ATSUnicode 8.5 on | |||||
ppc Toolbox CFM, CarbonLib 1.0 too. But its base: | |||||
ATS font manager is not published in these versions. | |||||
------------------------------------------------------------ | |||||
Last update: 2013-Nov-03. | |||||
Currently maintained by | |||||
suzuki toshiya, <mpsuzuki@hiroshima-u.ac.jp> | |||||
Originally prepared by | |||||
Leonard Rosenthol, <leonardr@lazerware.com> | |||||
Just van Rossum, <just@letterror.com> |
@ -0,0 +1,24 @@ | |||||
#!/usr/bin/env python | |||||
import sys | |||||
import string | |||||
if len( sys.argv ) == 1 : | |||||
for asc_line in sys.stdin.readlines(): | |||||
mpw_line = string.replace(asc_line, "\\xA5", "\245") | |||||
mpw_line = string.replace(mpw_line, "\\xB6", "\266") | |||||
mpw_line = string.replace(mpw_line, "\\xC4", "\304") | |||||
mpw_line = string.replace(mpw_line, "\\xC5", "\305") | |||||
mpw_line = string.replace(mpw_line, "\\xFF", "\377") | |||||
mpw_line = string.replace(mpw_line, "\n", "\r") | |||||
mpw_line = string.replace(mpw_line, "\\n", "\n") | |||||
sys.stdout.write(mpw_line) | |||||
elif sys.argv[1] == "-r" : | |||||
for mpw_line in sys.stdin.readlines(): | |||||
asc_line = string.replace(mpw_line, "\n", "\\n") | |||||
asc_line = string.replace(asc_line, "\r", "\n") | |||||
asc_line = string.replace(asc_line, "\245", "\\xA5") | |||||
asc_line = string.replace(asc_line, "\266", "\\xB6") | |||||
asc_line = string.replace(asc_line, "\304", "\\xC4") | |||||
asc_line = string.replace(asc_line, "\305", "\\xC5") | |||||
asc_line = string.replace(asc_line, "\377", "\\xFF") | |||||
sys.stdout.write(asc_line) |
@ -0,0 +1,36 @@ | |||||
<?xml version="1.0" encoding="UTF-8"?> | |||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" | |||||
"https://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |||||
<plist version="1.0"> | |||||
<dict> | |||||
<key>CFBundleDevelopmentRegion</key> | |||||
<string>English</string> | |||||
<key>CFBundleExecutable</key> | |||||
<string>FreeType</string> | |||||
<key>CFBundleGetInfoString</key> | |||||
<string>FreeType ${PROJECT_VERSION}</string> | |||||
<key>CFBundleInfoDictionaryVersion</key> | |||||
<string>6.0</string> | |||||
<key>CFBundleName</key> | |||||
<string>FreeType</string> | |||||
<key>CFBundlePackageType</key> | |||||
<string>FMWK</string> | |||||
<key>CFBundleShortVersionString</key> | |||||
<string>${PROJECT_VERSION}</string> | |||||
<key>CFBundleSignature</key> | |||||
<string>????</string> | |||||
<key>CFBundleVersion</key> | |||||
<string>${PROJECT_VERSION}</string> | |||||
</dict> | |||||
</plist> |
@ -0,0 +1,117 @@ | |||||
#!/usr/bin/env python | |||||
# | |||||
# Copyright (C) 2020-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
"""Extract the FreeType version numbers from `<freetype/freetype.h>`. | |||||
This script parses the header to extract the version number defined there. | |||||
By default, the full dotted version number is printed, but `--major`, | |||||
`--minor` or `--patch` can be used to only print one of these values | |||||
instead. | |||||
""" | |||||
from __future__ import print_function | |||||
import argparse | |||||
import os | |||||
import re | |||||
import sys | |||||
# Expected input: | |||||
# | |||||
# ... | |||||
# #define FREETYPE_MAJOR 2 | |||||
# #define FREETYPE_MINOR 10 | |||||
# #define FREETYPE_PATCH 2 | |||||
# ... | |||||
RE_MAJOR = re.compile(r"^ \#define \s+ FREETYPE_MAJOR \s+ (.*) $", re.X) | |||||
RE_MINOR = re.compile(r"^ \#define \s+ FREETYPE_MINOR \s+ (.*) $", re.X) | |||||
RE_PATCH = re.compile(r"^ \#define \s+ FREETYPE_PATCH \s+ (.*) $", re.X) | |||||
def parse_freetype_header(header): | |||||
major = None | |||||
minor = None | |||||
patch = None | |||||
for line in header.splitlines(): | |||||
line = line.rstrip() | |||||
m = RE_MAJOR.match(line) | |||||
if m: | |||||
assert major == None, "FREETYPE_MAJOR appears more than once!" | |||||
major = m.group(1) | |||||
continue | |||||
m = RE_MINOR.match(line) | |||||
if m: | |||||
assert minor == None, "FREETYPE_MINOR appears more than once!" | |||||
minor = m.group(1) | |||||
continue | |||||
m = RE_PATCH.match(line) | |||||
if m: | |||||
assert patch == None, "FREETYPE_PATCH appears more than once!" | |||||
patch = m.group(1) | |||||
continue | |||||
assert ( | |||||
major and minor and patch | |||||
), "This header is missing one of FREETYPE_MAJOR, FREETYPE_MINOR or FREETYPE_PATCH!" | |||||
return (major, minor, patch) | |||||
def main(): | |||||
parser = argparse.ArgumentParser(description=__doc__) | |||||
group = parser.add_mutually_exclusive_group() | |||||
group.add_argument( | |||||
"--major", | |||||
action="store_true", | |||||
help="Only print the major version number.", | |||||
) | |||||
group.add_argument( | |||||
"--minor", | |||||
action="store_true", | |||||
help="Only print the minor version number.", | |||||
) | |||||
group.add_argument( | |||||
"--patch", | |||||
action="store_true", | |||||
help="Only print the patch version number.", | |||||
) | |||||
parser.add_argument( | |||||
"input", | |||||
metavar="FREETYPE_H", | |||||
help="The input freetype.h header to parse.", | |||||
) | |||||
args = parser.parse_args() | |||||
with open(args.input) as f: | |||||
header = f.read() | |||||
version = parse_freetype_header(header) | |||||
if args.major: | |||||
print(version[0]) | |||||
elif args.minor: | |||||
print(version[1]) | |||||
elif args.patch: | |||||
print(version[2]) | |||||
else: | |||||
print("%s.%s.%s" % version) | |||||
return 0 | |||||
if __name__ == "__main__": | |||||
sys.exit(main()) |
@ -0,0 +1,115 @@ | |||||
#!/usr/bin/env python | |||||
# | |||||
# Copyright (C) 2020-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
"""Extract the libtool version from `configure.raw`. | |||||
This script parses the `configure.raw` file to extract the libtool version | |||||
number. By default, the full dotted version number is printed, but | |||||
`--major`, `--minor` or `--patch` can be used to only print one of these | |||||
values instead. | |||||
""" | |||||
from __future__ import print_function | |||||
import argparse | |||||
import os | |||||
import re | |||||
import sys | |||||
# Expected input: | |||||
# | |||||
# ... | |||||
# version_info='23:2:17' | |||||
# ... | |||||
RE_VERSION_INFO = re.compile(r"^version_info='(\d+):(\d+):(\d+)'") | |||||
def parse_configure_raw(header): | |||||
major = None | |||||
minor = None | |||||
patch = None | |||||
for line in header.splitlines(): | |||||
line = line.rstrip() | |||||
m = RE_VERSION_INFO.match(line) | |||||
if m: | |||||
assert major == None, "version_info appears more than once!" | |||||
major = m.group(1) | |||||
minor = m.group(2) | |||||
patch = m.group(3) | |||||
continue | |||||
assert ( | |||||
major and minor and patch | |||||
), "This input file is missing a version_info definition!" | |||||
return (major, minor, patch) | |||||
def main(): | |||||
parser = argparse.ArgumentParser(description=__doc__) | |||||
group = parser.add_mutually_exclusive_group() | |||||
group.add_argument( | |||||
"--major", | |||||
action="store_true", | |||||
help="Only print the major version number.", | |||||
) | |||||
group.add_argument( | |||||
"--minor", | |||||
action="store_true", | |||||
help="Only print the minor version number.", | |||||
) | |||||
group.add_argument( | |||||
"--patch", | |||||
action="store_true", | |||||
help="Only print the patch version number.", | |||||
) | |||||
group.add_argument( | |||||
"--soversion", | |||||
action="store_true", | |||||
help="Only print the libtool library suffix.", | |||||
) | |||||
parser.add_argument( | |||||
"input", | |||||
metavar="CONFIGURE_RAW", | |||||
help="The input configure.raw file to parse.", | |||||
) | |||||
args = parser.parse_args() | |||||
with open(args.input) as f: | |||||
raw_file = f.read() | |||||
version = parse_configure_raw(raw_file) | |||||
if args.major: | |||||
print(version[0]) | |||||
elif args.minor: | |||||
print(version[1]) | |||||
elif args.patch: | |||||
print(version[2]) | |||||
elif args.soversion: | |||||
# Convert libtool version_info to the library suffix. | |||||
# (current,revision, age) -> (current - age, age, revision) | |||||
print( | |||||
"%d.%s.%s" | |||||
% (int(version[0]) - int(version[2]), version[2], version[1]) | |||||
) | |||||
else: | |||||
print("%s.%s.%s" % version) | |||||
return 0 | |||||
if __name__ == "__main__": | |||||
sys.exit(main()) |
@ -0,0 +1,89 @@ | |||||
#!/usr/bin/env python | |||||
# | |||||
# Copyright (C) 2020-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
"""Generate FreeType reference documentation.""" | |||||
from __future__ import print_function | |||||
import argparse | |||||
import glob | |||||
import os | |||||
import subprocess | |||||
import sys | |||||
def main(): | |||||
parser = argparse.ArgumentParser(description=__doc__) | |||||
parser.add_argument( | |||||
"--input-dir", | |||||
required=True, | |||||
help="Top-level FreeType source directory.", | |||||
) | |||||
parser.add_argument( | |||||
"--version", required=True, help='FreeType version (e.g. "2.x.y").' | |||||
) | |||||
parser.add_argument( | |||||
"--output-dir", required=True, help="Output directory." | |||||
) | |||||
args = parser.parse_args() | |||||
# Get the list of input files of interest. | |||||
include_dir = os.path.join(args.input_dir, "include") | |||||
include_config_dir = os.path.join(include_dir, "config") | |||||
include_cache_dir = os.path.join(include_dir, "cache") | |||||
all_headers = ( | |||||
glob.glob(os.path.join(args.input_dir, "include", "freetype", "*.h")) | |||||
+ glob.glob( | |||||
os.path.join( | |||||
args.input_dir, "include", "freetype", "config", "*.h" | |||||
) | |||||
) | |||||
+ glob.glob( | |||||
os.path.join( | |||||
args.input_dir, "include", "freetype", "cache", "*.h" | |||||
) | |||||
) | |||||
) | |||||
if not os.path.exists(args.output_dir): | |||||
os.makedirs(args.output_dir) | |||||
else: | |||||
assert os.path.isdir(args.output_dir), ( | |||||
"Not a directory: " + args.output_dir | |||||
) | |||||
cmds = [ | |||||
sys.executable, | |||||
"-m", | |||||
"docwriter", | |||||
"--prefix=ft2", | |||||
"--title=FreeType-" + args.version, | |||||
"--site=reference", | |||||
"--output=" + args.output_dir, | |||||
] + all_headers | |||||
print("Running docwriter...") | |||||
subprocess.check_call(cmds) | |||||
print("Building static site...") | |||||
subprocess.check_call( | |||||
[sys.executable, "-m", "mkdocs", "build"], cwd=args.output_dir | |||||
) | |||||
return 0 | |||||
if __name__ == "__main__": | |||||
sys.exit(main()) |
@ -0,0 +1,170 @@ | |||||
#!/usr/bin/env python | |||||
# | |||||
# Copyright (C) 2020-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
"""Parse modules.cfg and dump its output either as ftmodule.h or a list of | |||||
base extensions. | |||||
""" | |||||
from __future__ import print_function | |||||
import argparse | |||||
import os | |||||
import re | |||||
import sys | |||||
# Expected input: | |||||
# | |||||
# ... | |||||
# FONT_MODULES += <name> | |||||
# HINTING_MODULES += <name> | |||||
# RASTER_MODULES += <name> | |||||
# AUX_MODULES += <name> | |||||
# BASE_EXTENSIONS += <name> | |||||
# ... | |||||
def parse_modules_cfg(input_file): | |||||
lists = { | |||||
"FONT_MODULES": [], | |||||
"HINTING_MODULES": [], | |||||
"RASTER_MODULES": [], | |||||
"AUX_MODULES": [], | |||||
"BASE_EXTENSIONS": [], | |||||
} | |||||
for line in input_file.splitlines(): | |||||
line = line.rstrip() | |||||
# Ignore empty lines and those that start with a comment. | |||||
if not line or line[0] == "#": | |||||
continue | |||||
items = line.split() | |||||
assert len(items) == 3 and items[1] == "+=", ( | |||||
"Unexpected input line [%s]" % line | |||||
) | |||||
assert items[0] in lists, ( | |||||
"Unexpected configuration variable name " + items[0] | |||||
) | |||||
lists[items[0]].append(items[2]) | |||||
return lists | |||||
def generate_ftmodule(lists): | |||||
result = "/* This is a generated file. */\n" | |||||
for driver in lists["FONT_MODULES"]: | |||||
if driver == "sfnt": # Special case for the sfnt 'driver'. | |||||
result += "FT_USE_MODULE( FT_Module_Class, sfnt_module_class )\n" | |||||
continue | |||||
name = { | |||||
"truetype": "tt", | |||||
"type1": "t1", | |||||
"cid": "t1cid", | |||||
"type42": "t42", | |||||
"winfonts": "winfnt", | |||||
}.get(driver, driver) | |||||
result += ( | |||||
"FT_USE_MODULE( FT_Driver_ClassRec, %s_driver_class )\n" % name | |||||
) | |||||
for module in lists["HINTING_MODULES"]: | |||||
result += ( | |||||
"FT_USE_MODULE( FT_Module_Class, %s_module_class )\n" % module | |||||
) | |||||
for module in lists["RASTER_MODULES"]: | |||||
name = { | |||||
"raster": "ft_raster1", | |||||
"smooth": "ft_smooth", | |||||
}.get(module) | |||||
result += ( | |||||
"FT_USE_MODULE( FT_Renderer_Class, %s_renderer_class )\n" % name | |||||
) | |||||
for module in lists["AUX_MODULES"]: | |||||
if module in ("psaux", "psnames", "otvalid", "gxvalid"): | |||||
result += ( | |||||
"FT_USE_MODULE( FT_Module_Class, %s_module_class )\n" % module | |||||
) | |||||
result += "/* EOF */\n" | |||||
return result | |||||
def generate_main_modules(lists): | |||||
return "\n".join( | |||||
lists["FONT_MODULES"] | |||||
+ lists["HINTING_MODULES"] | |||||
+ lists["RASTER_MODULES"] | |||||
) | |||||
def generate_aux_modules(lists): | |||||
return "\n".join(lists["AUX_MODULES"]) | |||||
def generate_base_extensions(lists): | |||||
return "\n".join(lists["BASE_EXTENSIONS"]) | |||||
def main(): | |||||
parser = argparse.ArgumentParser(description=__doc__) | |||||
parser.add_argument( | |||||
"--format", | |||||
required=True, | |||||
choices=( | |||||
"ftmodule.h", | |||||
"main-modules", | |||||
"aux-modules", | |||||
"base-extensions-list", | |||||
), | |||||
help="Select output format.", | |||||
) | |||||
parser.add_argument( | |||||
"input", | |||||
metavar="CONFIGURE_RAW", | |||||
help="The input configure.raw file to parse.", | |||||
) | |||||
parser.add_argument("--output", help="Output file (default is stdout).") | |||||
args = parser.parse_args() | |||||
with open(args.input) as f: | |||||
input_data = f.read() | |||||
lists = parse_modules_cfg(input_data) | |||||
if args.format == "ftmodule.h": | |||||
result = generate_ftmodule(lists) | |||||
elif args.format == "main-modules": | |||||
result = generate_main_modules(lists) | |||||
elif args.format == "aux-modules": | |||||
result = generate_aux_modules(lists) | |||||
elif args.format == "base-extensions-list": | |||||
result = generate_base_extensions(lists) | |||||
else: | |||||
assert False, "Invalid output format!" | |||||
if args.output: | |||||
with open(args.output, "w") as f: | |||||
f.write(result) | |||||
else: | |||||
print(result) | |||||
return 0 | |||||
if __name__ == "__main__": | |||||
sys.exit(main()) |
@ -0,0 +1,115 @@ | |||||
#!/usr/bin/env python | |||||
# | |||||
# Copyright (C) 2020-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
"""Toggle settings in `ftoption.h` file based on command-line arguments. | |||||
This script takes an `ftoption.h` file as input and rewrites | |||||
`#define`/`#undef` lines in it based on `--enable=CONFIG_VARNAME` or | |||||
`--disable=CONFIG_VARNAME` arguments passed to it, where `CONFIG_VARNAME` is | |||||
configuration variable name, such as `FT_CONFIG_OPTION_USE_LZW`, that may | |||||
appear in the file. | |||||
Note that if one of `CONFIG_VARNAME` is not found in the input file, this | |||||
script exits with an error message listing the missing variable names. | |||||
""" | |||||
import argparse | |||||
import os | |||||
import re | |||||
import sys | |||||
def main(): | |||||
parser = argparse.ArgumentParser(description=__doc__) | |||||
parser.add_argument( | |||||
"input", metavar="FTOPTION_H", help="Path to input ftoption.h file." | |||||
) | |||||
parser.add_argument("--output", help="Output to file instead of stdout.") | |||||
parser.add_argument( | |||||
"--enable", | |||||
action="append", | |||||
default=[], | |||||
help="Enable a given build option (e.g. FT_CONFIG_OPTION_USE_LZW).", | |||||
) | |||||
parser.add_argument( | |||||
"--disable", | |||||
action="append", | |||||
default=[], | |||||
help="Disable a given build option.", | |||||
) | |||||
args = parser.parse_args() | |||||
common_options = set(args.enable) & set(args.disable) | |||||
if common_options: | |||||
parser.error( | |||||
"Options cannot be both enabled and disabled: %s" | |||||
% sorted(common_options) | |||||
) | |||||
return 1 | |||||
with open(args.input) as f: | |||||
input_file = f.read() | |||||
options_seen = set() | |||||
new_lines = [] | |||||
for line in input_file.splitlines(): | |||||
# Expected formats: | |||||
# #define <CONFIG_VAR> | |||||
# /* #define <CONFIG_VAR> */ | |||||
# #undef <CONFIG_VAR> | |||||
line = line.rstrip() | |||||
if line.startswith("/* #define ") and line.endswith(" */"): | |||||
option_name = line[11:-3].strip() | |||||
option_enabled = False | |||||
elif line.startswith("#define "): | |||||
option_name = line[8:].strip() | |||||
option_enabled = True | |||||
elif line.startswith("#undef "): | |||||
option_name = line[7:].strip() | |||||
option_enabled = False | |||||
else: | |||||
new_lines.append(line) | |||||
continue | |||||
options_seen.add(option_name) | |||||
if option_enabled and option_name in args.disable: | |||||
line = "#undef " + option_name | |||||
elif not option_enabled and option_name in args.enable: | |||||
line = "#define " + option_name | |||||
new_lines.append(line) | |||||
result = "\n".join(new_lines) + "\n" | |||||
# Sanity check that all command-line options were actually processed. | |||||
cmdline_options = set(args.enable) | set(args.disable) | |||||
assert cmdline_options.issubset( | |||||
options_seen | |||||
), "Could not find options in input file: " + ", ".join( | |||||
sorted(cmdline_options - options_seen) | |||||
) | |||||
if args.output: | |||||
with open(args.output, "w") as f: | |||||
f.write(result) | |||||
else: | |||||
print(result) | |||||
return 0 | |||||
if __name__ == "__main__": | |||||
sys.exit(main()) |
@ -0,0 +1,79 @@ | |||||
# | |||||
# FreeType 2 modules sub-Makefile | |||||
# | |||||
# Copyright (C) 1996-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
# DO NOT INVOKE THIS MAKEFILE DIRECTLY! IT IS MEANT TO BE INCLUDED BY | |||||
# OTHER MAKEFILES. | |||||
# This file is in charge of handling the generation of the modules list | |||||
# file. | |||||
# Build the modules list. | |||||
# | |||||
$(FTMODULE_H): $(MODULES_CFG) | |||||
$(FTMODULE_H_INIT) | |||||
$(FTMODULE_H_CREATE) | |||||
$(FTMODULE_H_DONE) | |||||
ifneq ($(findstring $(PLATFORM),dos windows os2),) | |||||
OPEN_MODULE := @echo$(space) | |||||
CLOSE_MODULE := >> $(subst /,$(SEP),$(FTMODULE_H)) | |||||
REMOVE_MODULE := @-$(DELETE) $(subst /,$(SEP),$(FTMODULE_H)) | |||||
else | |||||
OPEN_MODULE := @echo " | |||||
CLOSE_MODULE := " >> $(FTMODULE_H) | |||||
REMOVE_MODULE := @-$(DELETE) $(FTMODULE_H) | |||||
endif | |||||
define FTMODULE_H_INIT | |||||
$(REMOVE_MODULE) | |||||
$(info Generating modules list in $(FTMODULE_H)...) | |||||
$(OPEN_MODULE)/* This is a generated file. */$(CLOSE_MODULE) | |||||
endef | |||||
# It is no mistake that the final closing parenthesis is on the | |||||
# next line -- it produces proper newlines during the expansion | |||||
# of `foreach'. | |||||
# | |||||
define FTMODULE_H_CREATE | |||||
$(foreach COMMAND,$(FTMODULE_H_COMMANDS),$($(COMMAND)) | |||||
) | |||||
endef | |||||
define FTMODULE_H_DONE | |||||
$(OPEN_MODULE)/* EOF */$(CLOSE_MODULE) | |||||
$(info done.) | |||||
endef | |||||
# $(OPEN_DRIVER) & $(CLOSE_DRIVER) are used to specify a given font driver | |||||
# in the `module.mk' rules file. | |||||
# | |||||
OPEN_DRIVER := $(OPEN_MODULE)FT_USE_MODULE( | |||||
CLOSE_DRIVER := )$(CLOSE_MODULE) | |||||
ECHO_DRIVER := @echo "* module:$(space) | |||||
ECHO_DRIVER_DESC := ( | |||||
ECHO_DRIVER_DONE := )" | |||||
# Each `module.mk' in the `src/*' subdirectories adds a variable with | |||||
# commands to $(FTMODULE_H_COMMANDS). Note that we can't use SRC_DIR here. | |||||
# | |||||
-include $(patsubst %,$(TOP_DIR)/src/%/module.mk,$(MODULES)) | |||||
# EOF |
@ -0,0 +1,81 @@ | |||||
# | |||||
# FreeType 2 configuration file to detect an OS/2 host platform. | |||||
# | |||||
# Copyright (C) 1996-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
.PHONY: setup | |||||
ifeq ($(PLATFORM),ansi) | |||||
ifdef OS2_SHELL | |||||
PLATFORM := os2 | |||||
endif # test OS2_SHELL | |||||
endif | |||||
ifeq ($(PLATFORM),os2) | |||||
COPY := copy | |||||
DELETE := del | |||||
CAT := type | |||||
SEP := $(BACKSLASH) | |||||
# gcc-emx by default | |||||
CONFIG_FILE := os2-gcc.mk | |||||
# additionally, we provide hooks for various other compilers | |||||
# | |||||
ifneq ($(findstring visualage,$(MAKECMDGOALS)),) # Visual Age C++ | |||||
CONFIG_FILE := os2-icc.mk | |||||
CC := icc | |||||
.PHONY: visualage | |||||
visualage: setup | |||||
@cd . | |||||
endif | |||||
ifneq ($(findstring watcom,$(MAKECMDGOALS)),) # Watcom C/C++ | |||||
CONFIG_FILE := os2-wat.mk | |||||
CC := wcc386 | |||||
.PHONY: watcom | |||||
watcom: setup | |||||
@cd . | |||||
endif | |||||
ifneq ($(findstring borlandc,$(MAKECMDGOALS)),) # Borland C++ 32-bit | |||||
CONFIG_FILE := os2-bcc.mk | |||||
CC := bcc32 | |||||
.PHONY: borlandc | |||||
borlandc: setup | |||||
@cd . | |||||
endif | |||||
ifneq ($(findstring devel,$(MAKECMDGOALS)),) # development target | |||||
CONFIG_FILE := os2-dev.mk | |||||
CC := gcc | |||||
.PHONY: devel | |||||
devel: setup | |||||
@cd . | |||||
endif | |||||
setup: std_setup | |||||
endif # test PLATFORM os2 | |||||
# EOF |
@ -0,0 +1,48 @@ | |||||
# | |||||
# FreeType 2 OS/2 specific definitions | |||||
# | |||||
# Copyright (C) 1996-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
DELETE := del | |||||
CAT := type | |||||
SEP := $(strip \ ) | |||||
PLATFORM_DIR := $(TOP_DIR)/builds/os2 | |||||
PLATFORM := os2 | |||||
# This is used for `make refdoc' and `make refdoc-venv' | |||||
# | |||||
BIN := Scripts | |||||
# The executable file extension (for tools), *with* leading dot. | |||||
# | |||||
E := .exe | |||||
# The directory where all library files are placed. | |||||
# | |||||
# By default, this is the same as $(OBJ_DIR); however, this can be changed | |||||
# to suit particular needs. | |||||
# | |||||
LIB_DIR := $(OBJ_DIR) | |||||
# The name of the final library file. Note that the DOS-specific Makefile | |||||
# uses a shorter (8.3) name. | |||||
# | |||||
LIBRARY := $(PROJECT) | |||||
# The NO_OUTPUT macro is used to ignore the output of commands. | |||||
# | |||||
NO_OUTPUT = 2> nul | |||||
# EOF |
@ -0,0 +1,30 @@ | |||||
# | |||||
# FreeType 2 configuration rules for OS/2 + GCC | |||||
# | |||||
# Development version without optimizations. | |||||
# | |||||
# Copyright (C) 1996-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
DEVEL_DIR := $(TOP_DIR)/devel | |||||
# include OS/2-specific definitions | |||||
include $(TOP_DIR)/builds/os2/os2-def.mk | |||||
# include gcc-specific definitions | |||||
include $(TOP_DIR)/builds/compiler/gcc-dev.mk | |||||
# include linking instructions | |||||
include $(TOP_DIR)/builds/link_dos.mk | |||||
# EOF |
@ -0,0 +1,26 @@ | |||||
# | |||||
# FreeType 2 configuration rules for the OS/2 + gcc | |||||
# | |||||
# Copyright (C) 1996-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
# include OS/2-specific definitions | |||||
include $(TOP_DIR)/builds/os2/os2-def.mk | |||||
# include gcc-specific definitions | |||||
include $(TOP_DIR)/builds/compiler/gcc.mk | |||||
# include linking instructions | |||||
include $(TOP_DIR)/builds/link_dos.mk | |||||
# EOF |
@ -0,0 +1,72 @@ | |||||
// | |||||
// FreeType 2 project for the symbian platform | |||||
// | |||||
// Copyright (C) 2008-2021 by | |||||
// David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
// | |||||
// This file is part of the FreeType project, and may only be used, modified, | |||||
// and distributed under the terms of the FreeType project license, | |||||
// LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
// indicate that you have read the license and understand and accept it | |||||
// fully. | |||||
PRJ_PLATFORMS | |||||
DEFAULT | |||||
PRJ_MMPFILES | |||||
freetype.mmp | |||||
PRJ_EXPORTS | |||||
../../include/freetype/ft2build.h | |||||
../../include/freetype/config/ftconfig.h config/ftconfig.h | |||||
../../include/freetype/config/ftheader.h config/ftheader.h | |||||
../../include/freetype/config/ftmodule.h config/ftmodule.h | |||||
../../include/freetype/config/ftoption.h config/ftoption.h | |||||
../../include/freetype/config/ftstdlib.h config/ftstdlib.h | |||||
../../include/freetype/freetype.h freetype.h | |||||
../../include/freetype/ftadvanc.h ftadvanc.h | |||||
../../include/freetype/ftautoh.h ftautoh.h | |||||
../../include/freetype/ftbbox.h ftbbox.h | |||||
../../include/freetype/ftbdf.h ftbdf.h | |||||
../../include/freetype/ftbitmap.h ftbitmap.h | |||||
../../include/freetype/ftbzip2.h ftbzip2.h | |||||
../../include/freetype/ftcache.h ftcache.h | |||||
../../include/freetype/ftcffdrv.h ftcffdrv.h | |||||
../../include/freetype/ftcid.h ftcid.h | |||||
../../include/freetype/fterrdef.h fterrdef.h | |||||
../../include/freetype/fterrors.h fterrors.h | |||||
../../include/freetype/ftfntfmt.h ftfntfmt.h | |||||
../../include/freetype/ftgasp.h ftgasp.h | |||||
../../include/freetype/ftglyph.h ftglyph.h | |||||
../../include/freetype/ftgxval.h ftgxval.h | |||||
../../include/freetype/ftgzip.h ftgzip.h | |||||
../../include/freetype/ftimage.h ftimage.h | |||||
../../include/freetype/ftincrem.h ftincrem.h | |||||
../../include/freetype/ftlcdfil.h ftlcdfil.h | |||||
../../include/freetype/ftlist.h ftlist.h | |||||
../../include/freetype/ftlzw.h ftlzw.h | |||||
../../include/freetype/ftmac.h ftmac.h | |||||
../../include/freetype/ftmm.h ftmm.h | |||||
../../include/freetype/ftmodapi.h ftmodapi.h | |||||
../../include/freetype/ftmoderr.h ftmoderr.h | |||||
../../include/freetype/ftotval.h ftotval.h | |||||
../../include/freetype/ftoutln.h ftoutln.h | |||||
../../include/freetype/ftparams.h ftparams.h | |||||
../../include/freetype/ftpcfdrv.h ftpcfdrv.h | |||||
../../include/freetype/ftpfr.h ftpfr.h | |||||
../../include/freetype/ftrender.h ftrender.h | |||||
../../include/freetype/ftsizes.h ftsizes.h | |||||
../../include/freetype/ftsnames.h ftsnames.h | |||||
../../include/freetype/ftstroke.h ftstroke.h | |||||
../../include/freetype/ftsynth.h ftsynth.h | |||||
../../include/freetype/ftsystem.h ftsystem.h | |||||
../../include/freetype/ftt1drv.h ftt1drv.h | |||||
../../include/freetype/fttrigon.h fttrigon.h | |||||
../../include/freetype/ftttdrv.h ftttdrv.h | |||||
../../include/freetype/fttypes.h fttypes.h | |||||
../../include/freetype/ftwinfnt.h ftwinfnt.h | |||||
../../include/freetype/t1tables.h t1tables.h | |||||
../../include/freetype/ttnameid.h ttnameid.h | |||||
../../include/freetype/tttables.h tttables.h | |||||
../../include/freetype/tttags.h tttags.h |
@ -0,0 +1,146 @@ | |||||
// | |||||
// FreeType 2 makefile for the symbian platform | |||||
// | |||||
// Copyright (C) 2008-2021 by | |||||
// David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
// | |||||
// This file is part of the FreeType project, and may only be used, modified, | |||||
// and distributed under the terms of the FreeType project license, | |||||
// LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
// indicate that you have read the license and understand and accept it | |||||
// fully. | |||||
target freetype.lib | |||||
targettype lib | |||||
macro NDEBUG | |||||
macro FT2_BUILD_LIBRARY | |||||
sourcepath ..\..\src\autofit | |||||
source autofit.c | |||||
sourcepath ..\..\src\base | |||||
source ftbase.c | |||||
source ftbbox.c | |||||
source ftbdf.c | |||||
source ftbitmap.c | |||||
source ftcid.c | |||||
source ftfstype.c | |||||
source ftgasp.c | |||||
source ftglyph.c | |||||
source ftgxval.c | |||||
source ftinit.c | |||||
source ftmm.c | |||||
source ftotval.c | |||||
source ftpatent.c | |||||
source ftpfr.c | |||||
source ftstroke.c | |||||
source ftsynth.c | |||||
source ftsystem.c | |||||
source fttype1.c | |||||
source ftwinfnt.c | |||||
sourcepath ..\..\src\bdf | |||||
source bdf.c | |||||
sourcepath ..\..\src\bzip2 | |||||
source ftbzip2.c | |||||
sourcepath ..\..\src\cache | |||||
source ftcache.c | |||||
sourcepath ..\..\src\cff | |||||
source cff.c | |||||
sourcepath ..\..\src\cid | |||||
source type1cid.c | |||||
sourcepath ..\..\src\gzip | |||||
source ftgzip.c | |||||
sourcepath ..\..\src\lzw | |||||
source ftlzw.c | |||||
sourcepath ..\..\src\pcf | |||||
source pcf.c | |||||
sourcepath ..\..\src\pfr | |||||
source pfr.c | |||||
sourcepath ..\..\src\psaux | |||||
source psaux.c | |||||
sourcepath ..\..\src\pshinter | |||||
source pshinter.c | |||||
sourcepath ..\..\src\psnames | |||||
source psmodule.c | |||||
sourcepath ..\..\src\raster | |||||
source raster.c | |||||
sourcepath ..\..\src\sfnt | |||||
source sfnt.c | |||||
sourcepath ..\..\src\smooth | |||||
source smooth.c | |||||
sourcepath ..\..\src\truetype | |||||
source truetype.c | |||||
sourcepath ..\..\src\type1 | |||||
source type1.c | |||||
sourcepath ..\..\src\type42 | |||||
source type42.c | |||||
sourcepath ..\..\src\winfonts | |||||
source winfnt.c | |||||
systeminclude ..\..\include | |||||
systeminclude \epoc32\include\stdapis | |||||
userinclude ..\..\src\autofit | |||||
userinclude ..\..\src\bdf | |||||
userinclude ..\..\src\bzip2 | |||||
userinclude ..\..\src\cache | |||||
userinclude ..\..\src\cff | |||||
userinclude ..\..\src\cid | |||||
userinclude ..\..\src\gxvalid | |||||
userinclude ..\..\src\gzip | |||||
userinclude ..\..\src\lzw | |||||
userinclude ..\..\src\otvalid | |||||
userinclude ..\..\src\pcf | |||||
userinclude ..\..\src\pfr | |||||
userinclude ..\..\src\psaux | |||||
userinclude ..\..\src\pshinter | |||||
userinclude ..\..\src\psnames | |||||
userinclude ..\..\src\raster | |||||
userinclude ..\..\src\sfnt | |||||
userinclude ..\..\src\smooth | |||||
userinclude ..\..\src\truetype | |||||
userinclude ..\..\src\type1 | |||||
userinclude ..\..\src\type42 | |||||
userinclude ..\..\src\winfonts |
@ -0,0 +1,309 @@ | |||||
# | |||||
# FreeType build system -- top-level sub-Makefile | |||||
# | |||||
# Copyright (C) 1996-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
# This file is designed for GNU Make, do not use it with another Make tool! | |||||
# | |||||
# It works as follows: | |||||
# | |||||
# - When invoked for the first time, this Makefile includes the rules found | |||||
# in `PROJECT/builds/detect.mk'. They are in charge of detecting the | |||||
# current platform. | |||||
# | |||||
# A summary of the detection is displayed, and the file `config.mk' is | |||||
# created in the current directory. | |||||
# | |||||
# - When invoked later, this Makefile includes the rules found in | |||||
# `config.mk'. This sub-Makefile defines some system-specific variables | |||||
# (like compiler, compilation flags, object suffix, etc.), then includes | |||||
# the rules found in `PROJECT/builds/PROJECT.mk', used to build the | |||||
# library. | |||||
# | |||||
# See the comments in `builds/detect.mk' and `builds/PROJECT.mk' for more | |||||
# details on host platform detection and library builds. | |||||
# First of all, check whether we have `$(value ...)'. We do this by testing | |||||
# for `$(eval ...)' which has been introduced in the same GNU make version. | |||||
eval_available := | |||||
$(eval eval_available := T) | |||||
ifneq ($(eval_available),T) | |||||
$(error FreeType's build system needs a Make program which supports $$(value)) | |||||
endif | |||||
.PHONY: all dist distclean modules setup | |||||
# The `space' variable is used to avoid trailing spaces in defining the | |||||
# `T' variable later. | |||||
# | |||||
empty := | |||||
space := $(empty) $(empty) | |||||
# The main configuration file, defining the `XXX_MODULES' variables. We | |||||
# prefer a `modules.cfg' file in OBJ_DIR over TOP_DIR. | |||||
# | |||||
ifndef MODULES_CFG | |||||
MODULES_CFG := $(TOP_DIR)/modules.cfg | |||||
ifneq ($(wildcard $(OBJ_DIR)/modules.cfg),) | |||||
MODULES_CFG := $(OBJ_DIR)/modules.cfg | |||||
endif | |||||
endif | |||||
# FTMODULE_H, as its name suggests, indicates where the FreeType module | |||||
# class file resides. | |||||
# | |||||
FTMODULE_H ?= $(OBJ_DIR)/ftmodule.h | |||||
include $(MODULES_CFG) | |||||
# The list of modules we are using. | |||||
# | |||||
MODULES := $(FONT_MODULES) \ | |||||
$(HINTING_MODULES) \ | |||||
$(RASTER_MODULES) \ | |||||
$(AUX_MODULES) | |||||
CONFIG_MK ?= config.mk | |||||
# If no configuration sub-makefile is present, or if `setup' is the target | |||||
# to be built, run the auto-detection rules to figure out which | |||||
# configuration rules file to use. | |||||
# | |||||
# Note that the configuration file is put in the current directory, which is | |||||
# not necessarily $(TOP_DIR). | |||||
# If `config.mk' is not present, set `check_platform'. | |||||
# | |||||
ifeq ($(wildcard $(CONFIG_MK)),) | |||||
check_platform := 1 | |||||
endif | |||||
# If `setup' is one of the targets requested, set `check_platform'. | |||||
# | |||||
ifneq ($(findstring setup,$(MAKECMDGOALS)),) | |||||
check_platform := 1 | |||||
endif | |||||
# Include the automatic host platform detection rules when we need to | |||||
# check the platform. | |||||
# | |||||
ifdef check_platform | |||||
all modules: setup | |||||
include $(TOP_DIR)/builds/detect.mk | |||||
# For builds directly from the git repository we need to copy files | |||||
# from `subprojects/dlg' to `src/dlg' and `include/dlg'. | |||||
# | |||||
ifeq ($(wildcard $(TOP_DIR)/src/dlg/dlg.*),) | |||||
ifeq ($(wildcard $(TOP_DIR)/subprojects/dlg/*),) | |||||
copy_submodule: check_out_submodule | |||||
endif | |||||
setup: copy_submodule | |||||
endif | |||||
# This rule makes sense for Unix only to remove files created by a run of | |||||
# the configure script which hasn't been successful (so that no | |||||
# `config.mk' has been created). It uses the built-in $(RM) command of | |||||
# GNU make. Similarly, `nul' is created if e.g. `make setup windows' has | |||||
# been erroneously used. | |||||
# | |||||
# Note: This test is duplicated in `builds/unix/detect.mk'. | |||||
# | |||||
is_unix := $(strip $(wildcard /sbin/init) \ | |||||
$(wildcard /usr/sbin/init) \ | |||||
$(wildcard /dev/null) \ | |||||
$(wildcard /hurd/auth)) | |||||
ifneq ($(is_unix),) | |||||
distclean: | |||||
$(RM) builds/unix/config.cache | |||||
$(RM) builds/unix/config.log | |||||
$(RM) builds/unix/config.status | |||||
$(RM) builds/unix/unix-def.mk | |||||
$(RM) builds/unix/unix-cc.mk | |||||
$(RM) builds/unix/freetype2.pc | |||||
$(RM) nul | |||||
endif # test is_unix | |||||
# IMPORTANT: | |||||
# | |||||
# `setup' must be defined by the host platform detection rules to create | |||||
# the `config.mk' file in the current directory. | |||||
else | |||||
# A configuration sub-Makefile is present -- simply run it. | |||||
# | |||||
all: single | |||||
BUILD_PROJECT := yes | |||||
include $(CONFIG_MK) | |||||
endif # test check_platform | |||||
.PHONY: check_out_submodule copy_submodule | |||||
check_out_submodule: | |||||
$(info Checking out submodule in `subprojects/dlg') | |||||
git submodule init | |||||
git submodule update | |||||
copy_submodule: | |||||
$(info Copying files from `subprojects/dlg' to `src/dlg' and `include/dlg') | |||||
ifeq ($(wildcard include/dlg),) | |||||
mkdir $(subst /,$(SEP),include/dlg) | |||||
endif | |||||
$(COPY) $(subst /,$(SEP),subprojects/dlg/include/dlg/output.h include/dlg) | |||||
$(COPY) $(subst /,$(SEP),subprojects/dlg/include/dlg/dlg.h include/dlg) | |||||
$(COPY) $(subst /,$(SEP),subprojects/dlg/src/dlg/dlg.c src/dlg) | |||||
# We always need the list of modules in ftmodule.h. | |||||
# | |||||
all setup: $(FTMODULE_H) | |||||
# The `modules' target unconditionally rebuilds the module list. | |||||
# | |||||
modules: | |||||
$(FTMODULE_H_INIT) | |||||
$(FTMODULE_H_CREATE) | |||||
$(FTMODULE_H_DONE) | |||||
include $(TOP_DIR)/builds/modules.mk | |||||
# get FreeType version string, using a | |||||
# poor man's `sed' emulation with make's built-in string functions | |||||
# | |||||
work := $(strip $(shell $(CAT) \ | |||||
$(subst /,$(SEP),$(TOP_DIR)/include/freetype/freetype.h))) | |||||
work := $(subst |,x,$(work)) | |||||
work := $(subst $(space),|,$(work)) | |||||
work := $(subst \#define|FREETYPE_MAJOR|,$(space),$(work)) | |||||
work := $(word 2,$(work)) | |||||
major := $(subst |,$(space),$(work)) | |||||
major := $(firstword $(major)) | |||||
work := $(subst \#define|FREETYPE_MINOR|,$(space),$(work)) | |||||
work := $(word 2,$(work)) | |||||
minor := $(subst |,$(space),$(work)) | |||||
minor := $(firstword $(minor)) | |||||
work := $(subst \#define|FREETYPE_PATCH|,$(space),$(work)) | |||||
work := $(word 2,$(work)) | |||||
patch := $(subst |,$(space),$(work)) | |||||
patch := $(firstword $(patch)) | |||||
# ifneq ($(findstring x0x,x$(patch)x),) | |||||
# version := $(major).$(minor) | |||||
# winversion := $(major)$(minor) | |||||
# else | |||||
version := $(major).$(minor).$(patch) | |||||
winversion := $(major)$(minor)$(patch) | |||||
# endif | |||||
# This target builds the tarballs. | |||||
# | |||||
# Not to be run by a normal user -- there are no attempts to make it | |||||
# generic. | |||||
dist: | |||||
-rm -rf tmp | |||||
rm -f freetype-$(version).tar.gz | |||||
rm -f freetype-$(version).tar.xz | |||||
rm -f ft$(winversion).zip | |||||
for d in `find . -wholename '*/.git' -prune \ | |||||
-o -type f \ | |||||
-o -print` ; do \ | |||||
mkdir -p tmp/$$d ; \ | |||||
done ; | |||||
currdir=`pwd` ; \ | |||||
for f in `find . -wholename '*/.git' -prune \ | |||||
-o -name .gitattributes \ | |||||
-o -name .gitignore \ | |||||
-o -name .gitlab-ci.yml \ | |||||
-o -name .gitmodules \ | |||||
-o -name .mailmap \ | |||||
-o -type d \ | |||||
-o -print` ; do \ | |||||
ln -s $$currdir/$$f tmp/$$f ; \ | |||||
done | |||||
cd tmp ; \ | |||||
$(MAKE) devel ; \ | |||||
$(MAKE) do-dist | |||||
mv tmp freetype-$(version) | |||||
tar -H ustar -chf - freetype-$(version) \ | |||||
| gzip -9 -c > freetype-$(version).tar.gz | |||||
tar -H ustar -chf - freetype-$(version) \ | |||||
| xz -c > freetype-$(version).tar.xz | |||||
@# Use CR/LF for zip files. | |||||
zip -lr9 ft$(winversion).zip freetype-$(version) | |||||
rm -fr freetype-$(version) | |||||
# The locations of the latest `config.guess' and `config.sub' versions (from | |||||
# GNU `config' git repository), relative to the `tmp' directory used during | |||||
# `make dist'. | |||||
# | |||||
CONFIG_GUESS = ~/git/config/config.guess | |||||
CONFIG_SUB = ~/git/config/config.sub | |||||
# Don't say `make do-dist'. Always use `make dist' instead. | |||||
# | |||||
.PHONY: do-dist | |||||
do-dist: distclean refdoc | |||||
@# Without removing the files, `autoconf' and friends follow links. | |||||
rm -f builds/unix/aclocal.m4 | |||||
rm -f builds/unix/configure.ac | |||||
rm -f builds/unix/configure | |||||
sh autogen.sh | |||||
rm -rf builds/unix/autom4te.cache | |||||
cp $(CONFIG_GUESS) builds/unix | |||||
cp $(CONFIG_SUB) builds/unix | |||||
@# Remove intermediate files created by the `refdoc' target. | |||||
rm -rf docs/markdown | |||||
rm -f docs/mkdocs.yml | |||||
@# Remove more stuff related to git. | |||||
rm -rf subprojects | |||||
# EOF |
@ -0,0 +1,177 @@ | |||||
# =========================================================================== | |||||
# https://www.gnu.org/software/autoconf-archive/ax_compare_version.html | |||||
# =========================================================================== | |||||
# | |||||
# SYNOPSIS | |||||
# | |||||
# AX_COMPARE_VERSION(VERSION_A, OP, VERSION_B, [ACTION-IF-TRUE], [ACTION-IF-FALSE]) | |||||
# | |||||
# DESCRIPTION | |||||
# | |||||
# This macro compares two version strings. Due to the various number of | |||||
# minor-version numbers that can exist, and the fact that string | |||||
# comparisons are not compatible with numeric comparisons, this is not | |||||
# necessarily trivial to do in a autoconf script. This macro makes doing | |||||
# these comparisons easy. | |||||
# | |||||
# The six basic comparisons are available, as well as checking equality | |||||
# limited to a certain number of minor-version levels. | |||||
# | |||||
# The operator OP determines what type of comparison to do, and can be one | |||||
# of: | |||||
# | |||||
# eq - equal (test A == B) | |||||
# ne - not equal (test A != B) | |||||
# le - less than or equal (test A <= B) | |||||
# ge - greater than or equal (test A >= B) | |||||
# lt - less than (test A < B) | |||||
# gt - greater than (test A > B) | |||||
# | |||||
# Additionally, the eq and ne operator can have a number after it to limit | |||||
# the test to that number of minor versions. | |||||
# | |||||
# eq0 - equal up to the length of the shorter version | |||||
# ne0 - not equal up to the length of the shorter version | |||||
# eqN - equal up to N sub-version levels | |||||
# neN - not equal up to N sub-version levels | |||||
# | |||||
# When the condition is true, shell commands ACTION-IF-TRUE are run, | |||||
# otherwise shell commands ACTION-IF-FALSE are run. The environment | |||||
# variable 'ax_compare_version' is always set to either 'true' or 'false' | |||||
# as well. | |||||
# | |||||
# Examples: | |||||
# | |||||
# AX_COMPARE_VERSION([3.15.7],[lt],[3.15.8]) | |||||
# AX_COMPARE_VERSION([3.15],[lt],[3.15.8]) | |||||
# | |||||
# would both be true. | |||||
# | |||||
# AX_COMPARE_VERSION([3.15.7],[eq],[3.15.8]) | |||||
# AX_COMPARE_VERSION([3.15],[gt],[3.15.8]) | |||||
# | |||||
# would both be false. | |||||
# | |||||
# AX_COMPARE_VERSION([3.15.7],[eq2],[3.15.8]) | |||||
# | |||||
# would be true because it is only comparing two minor versions. | |||||
# | |||||
# AX_COMPARE_VERSION([3.15.7],[eq0],[3.15]) | |||||
# | |||||
# would be true because it is only comparing the lesser number of minor | |||||
# versions of the two values. | |||||
# | |||||
# Note: The characters that separate the version numbers do not matter. An | |||||
# empty string is the same as version 0. OP is evaluated by autoconf, not | |||||
# configure, so must be a string, not a variable. | |||||
# | |||||
# The author would like to acknowledge Guido Draheim whose advice about | |||||
# the m4_case and m4_ifvaln functions make this macro only include the | |||||
# portions necessary to perform the specific comparison specified by the | |||||
# OP argument in the final configure script. | |||||
# | |||||
# LICENSE | |||||
# | |||||
# Copyright (c) 2008 Tim Toolan <toolan@ele.uri.edu> | |||||
# | |||||
# Copying and distribution of this file, with or without modification, are | |||||
# permitted in any medium without royalty provided the copyright notice | |||||
# and this notice are preserved. This file is offered as-is, without any | |||||
# warranty. | |||||
#serial 13 | |||||
dnl ######################################################################### | |||||
AC_DEFUN([AX_COMPARE_VERSION], [ | |||||
AC_REQUIRE([AC_PROG_AWK]) | |||||
# Used to indicate true or false condition | |||||
ax_compare_version=false | |||||
# Convert the two version strings to be compared into a format that | |||||
# allows a simple string comparison. The end result is that a version | |||||
# string of the form 1.12.5-r617 will be converted to the form | |||||
# 0001001200050617. In other words, each number is zero padded to four | |||||
# digits, and non digits are removed. | |||||
AS_VAR_PUSHDEF([A],[ax_compare_version_A]) | |||||
A=`echo "$1" | sed -e 's/\([[0-9]]*\)/Z\1Z/g' \ | |||||
-e 's/Z\([[0-9]]\)Z/Z0\1Z/g' \ | |||||
-e 's/Z\([[0-9]][[0-9]]\)Z/Z0\1Z/g' \ | |||||
-e 's/Z\([[0-9]][[0-9]][[0-9]]\)Z/Z0\1Z/g' \ | |||||
-e 's/[[^0-9]]//g'` | |||||
AS_VAR_PUSHDEF([B],[ax_compare_version_B]) | |||||
B=`echo "$3" | sed -e 's/\([[0-9]]*\)/Z\1Z/g' \ | |||||
-e 's/Z\([[0-9]]\)Z/Z0\1Z/g' \ | |||||
-e 's/Z\([[0-9]][[0-9]]\)Z/Z0\1Z/g' \ | |||||
-e 's/Z\([[0-9]][[0-9]][[0-9]]\)Z/Z0\1Z/g' \ | |||||
-e 's/[[^0-9]]//g'` | |||||
dnl # In the case of le, ge, lt, and gt, the strings are sorted as necessary | |||||
dnl # then the first line is used to determine if the condition is true. | |||||
dnl # The sed right after the echo is to remove any indented white space. | |||||
m4_case(m4_tolower($2), | |||||
[lt],[ | |||||
ax_compare_version=`echo "x$A | |||||
x$B" | sed 's/^ *//' | sort -r | sed "s/x${A}/false/;s/x${B}/true/;1q"` | |||||
], | |||||
[gt],[ | |||||
ax_compare_version=`echo "x$A | |||||
x$B" | sed 's/^ *//' | sort | sed "s/x${A}/false/;s/x${B}/true/;1q"` | |||||
], | |||||
[le],[ | |||||
ax_compare_version=`echo "x$A | |||||
x$B" | sed 's/^ *//' | sort | sed "s/x${A}/true/;s/x${B}/false/;1q"` | |||||
], | |||||
[ge],[ | |||||
ax_compare_version=`echo "x$A | |||||
x$B" | sed 's/^ *//' | sort -r | sed "s/x${A}/true/;s/x${B}/false/;1q"` | |||||
],[ | |||||
dnl Split the operator from the subversion count if present. | |||||
m4_bmatch(m4_substr($2,2), | |||||
[0],[ | |||||
# A count of zero means use the length of the shorter version. | |||||
# Determine the number of characters in A and B. | |||||
ax_compare_version_len_A=`echo "$A" | $AWK '{print(length)}'` | |||||
ax_compare_version_len_B=`echo "$B" | $AWK '{print(length)}'` | |||||
# Set A to no more than B's length and B to no more than A's length. | |||||
A=`echo "$A" | sed "s/\(.\{$ax_compare_version_len_B\}\).*/\1/"` | |||||
B=`echo "$B" | sed "s/\(.\{$ax_compare_version_len_A\}\).*/\1/"` | |||||
], | |||||
[[0-9]+],[ | |||||
# A count greater than zero means use only that many subversions | |||||
A=`echo "$A" | sed "s/\(\([[0-9]]\{4\}\)\{m4_substr($2,2)\}\).*/\1/"` | |||||
B=`echo "$B" | sed "s/\(\([[0-9]]\{4\}\)\{m4_substr($2,2)\}\).*/\1/"` | |||||
], | |||||
[.+],[ | |||||
AC_WARNING( | |||||
[invalid OP numeric parameter: $2]) | |||||
],[]) | |||||
# Pad zeros at end of numbers to make same length. | |||||
ax_compare_version_tmp_A="$A`echo $B | sed 's/./0/g'`" | |||||
B="$B`echo $A | sed 's/./0/g'`" | |||||
A="$ax_compare_version_tmp_A" | |||||
# Check for equality or inequality as necessary. | |||||
m4_case(m4_tolower(m4_substr($2,0,2)), | |||||
[eq],[ | |||||
test "x$A" = "x$B" && ax_compare_version=true | |||||
], | |||||
[ne],[ | |||||
test "x$A" != "x$B" && ax_compare_version=true | |||||
],[ | |||||
AC_WARNING([invalid OP parameter: $2]) | |||||
]) | |||||
]) | |||||
AS_VAR_POPDEF([A])dnl | |||||
AS_VAR_POPDEF([B])dnl | |||||
dnl # Execute ACTION-IF-TRUE / ACTION-IF-FALSE. | |||||
if test "$ax_compare_version" = "true" ; then | |||||
m4_ifvaln([$4],[$4],[:])dnl | |||||
m4_ifvaln([$5],[else $5])dnl | |||||
fi | |||||
]) dnl AX_COMPARE_VERSION |
@ -0,0 +1,66 @@ | |||||
# =========================================================================== | |||||
# https://www.gnu.org/software/autoconf-archive/ax_prog_python_version.html | |||||
# =========================================================================== | |||||
# | |||||
# SYNOPSIS | |||||
# | |||||
# AX_PROG_PYTHON_VERSION([VERSION],[ACTION-IF-TRUE],[ACTION-IF-FALSE]) | |||||
# | |||||
# DESCRIPTION | |||||
# | |||||
# Makes sure that python supports the version indicated. If true the shell | |||||
# commands in ACTION-IF-TRUE are executed. If not the shell commands in | |||||
# ACTION-IF-FALSE are run. Note if $PYTHON is not set (for example by | |||||
# running AC_CHECK_PROG or AC_PATH_PROG) the macro will fail. | |||||
# | |||||
# Example: | |||||
# | |||||
# AC_PATH_PROG([PYTHON],[python]) | |||||
# AX_PROG_PYTHON_VERSION([2.4.4],[ ... ],[ ... ]) | |||||
# | |||||
# This will check to make sure that the python you have supports at least | |||||
# version 2.4.4. | |||||
# | |||||
# NOTE: This macro uses the $PYTHON variable to perform the check. | |||||
# AX_WITH_PYTHON can be used to set that variable prior to running this | |||||
# macro. The $PYTHON_VERSION variable will be valorized with the detected | |||||
# version. | |||||
# | |||||
# LICENSE | |||||
# | |||||
# Copyright (c) 2009 Francesco Salvestrini <salvestrini@users.sourceforge.net> | |||||
# | |||||
# Copying and distribution of this file, with or without modification, are | |||||
# permitted in any medium without royalty provided the copyright notice | |||||
# and this notice are preserved. This file is offered as-is, without any | |||||
# warranty. | |||||
#serial 12 | |||||
AC_DEFUN([AX_PROG_PYTHON_VERSION],[ | |||||
AC_REQUIRE([AC_PROG_SED]) | |||||
AC_REQUIRE([AC_PROG_GREP]) | |||||
AS_IF([test -n "$PYTHON"],[ | |||||
ax_python_version="$1" | |||||
AC_MSG_CHECKING([for python version]) | |||||
changequote(<<,>>) | |||||
python_version=`$PYTHON -V 2>&1 | $GREP "^Python " | $SED -e 's/^.* \([0-9]*\.[0-9]*\.[0-9]*\)/\1/'` | |||||
changequote([,]) | |||||
AC_MSG_RESULT($python_version) | |||||
AC_SUBST([PYTHON_VERSION],[$python_version]) | |||||
AX_COMPARE_VERSION([$ax_python_version],[le],[$python_version],[ | |||||
: | |||||
$2 | |||||
],[ | |||||
: | |||||
$3 | |||||
]) | |||||
],[ | |||||
AC_MSG_WARN([could not find the python interpreter]) | |||||
$3 | |||||
]) | |||||
]) |
@ -0,0 +1,522 @@ | |||||
# =========================================================================== | |||||
# https://www.gnu.org/software/autoconf-archive/ax_pthread.html | |||||
# =========================================================================== | |||||
# | |||||
# SYNOPSIS | |||||
# | |||||
# AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) | |||||
# | |||||
# DESCRIPTION | |||||
# | |||||
# This macro figures out how to build C programs using POSIX threads. It | |||||
# sets the PTHREAD_LIBS output variable to the threads library and linker | |||||
# flags, and the PTHREAD_CFLAGS output variable to any special C compiler | |||||
# flags that are needed. (The user can also force certain compiler | |||||
# flags/libs to be tested by setting these environment variables.) | |||||
# | |||||
# Also sets PTHREAD_CC and PTHREAD_CXX to any special C compiler that is | |||||
# needed for multi-threaded programs (defaults to the value of CC | |||||
# respectively CXX otherwise). (This is necessary on e.g. AIX to use the | |||||
# special cc_r/CC_r compiler alias.) | |||||
# | |||||
# NOTE: You are assumed to not only compile your program with these flags, | |||||
# but also to link with them as well. For example, you might link with | |||||
# $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS | |||||
# $PTHREAD_CXX $CXXFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS | |||||
# | |||||
# If you are only building threaded programs, you may wish to use these | |||||
# variables in your default LIBS, CFLAGS, and CC: | |||||
# | |||||
# LIBS="$PTHREAD_LIBS $LIBS" | |||||
# CFLAGS="$CFLAGS $PTHREAD_CFLAGS" | |||||
# CXXFLAGS="$CXXFLAGS $PTHREAD_CFLAGS" | |||||
# CC="$PTHREAD_CC" | |||||
# CXX="$PTHREAD_CXX" | |||||
# | |||||
# In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant | |||||
# has a nonstandard name, this macro defines PTHREAD_CREATE_JOINABLE to | |||||
# that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX). | |||||
# | |||||
# Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the | |||||
# PTHREAD_PRIO_INHERIT symbol is defined when compiling with | |||||
# PTHREAD_CFLAGS. | |||||
# | |||||
# ACTION-IF-FOUND is a list of shell commands to run if a threads library | |||||
# is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it | |||||
# is not found. If ACTION-IF-FOUND is not specified, the default action | |||||
# will define HAVE_PTHREAD. | |||||
# | |||||
# Please let the authors know if this macro fails on any platform, or if | |||||
# you have any other suggestions or comments. This macro was based on work | |||||
# by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help | |||||
# from M. Frigo), as well as ac_pthread and hb_pthread macros posted by | |||||
# Alejandro Forero Cuervo to the autoconf macro repository. We are also | |||||
# grateful for the helpful feedback of numerous users. | |||||
# | |||||
# Updated for Autoconf 2.68 by Daniel Richard G. | |||||
# | |||||
# LICENSE | |||||
# | |||||
# Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu> | |||||
# Copyright (c) 2011 Daniel Richard G. <skunk@iSKUNK.ORG> | |||||
# Copyright (c) 2019 Marc Stevens <marc.stevens@cwi.nl> | |||||
# | |||||
# This program is free software: you can redistribute it and/or modify it | |||||
# under the terms of the GNU General Public License as published by the | |||||
# Free Software Foundation, either version 3 of the License, or (at your | |||||
# option) any later version. | |||||
# | |||||
# This program is distributed in the hope that it will be useful, but | |||||
# WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General | |||||
# Public License for more details. | |||||
# | |||||
# You should have received a copy of the GNU General Public License along | |||||
# with this program. If not, see <https://www.gnu.org/licenses/>. | |||||
# | |||||
# As a special exception, the respective Autoconf Macro's copyright owner | |||||
# gives unlimited permission to copy, distribute and modify the configure | |||||
# scripts that are the output of Autoconf when processing the Macro. You | |||||
# need not follow the terms of the GNU General Public License when using | |||||
# or distributing such scripts, even though portions of the text of the | |||||
# Macro appear in them. The GNU General Public License (GPL) does govern | |||||
# all other use of the material that constitutes the Autoconf Macro. | |||||
# | |||||
# This special exception to the GPL applies to versions of the Autoconf | |||||
# Macro released by the Autoconf Archive. When you make and distribute a | |||||
# modified version of the Autoconf Macro, you may extend this special | |||||
# exception to the GPL to apply to your modified version as well. | |||||
#serial 30 | |||||
AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD]) | |||||
AC_DEFUN([AX_PTHREAD], [ | |||||
AC_REQUIRE([AC_CANONICAL_TARGET]) | |||||
AC_REQUIRE([AC_PROG_CC]) | |||||
AC_REQUIRE([AC_PROG_SED]) | |||||
AC_LANG_PUSH([C]) | |||||
ax_pthread_ok=no | |||||
# We used to check for pthread.h first, but this fails if pthread.h | |||||
# requires special compiler flags (e.g. on Tru64 or Sequent). | |||||
# It gets checked for in the link test anyway. | |||||
# First of all, check if the user has set any of the PTHREAD_LIBS, | |||||
# etcetera environment variables, and if threads linking works using | |||||
# them: | |||||
if test "x$PTHREAD_CFLAGS$PTHREAD_LIBS" != "x"; then | |||||
ax_pthread_save_CC="$CC" | |||||
ax_pthread_save_CFLAGS="$CFLAGS" | |||||
ax_pthread_save_LIBS="$LIBS" | |||||
AS_IF([test "x$PTHREAD_CC" != "x"], [CC="$PTHREAD_CC"]) | |||||
AS_IF([test "x$PTHREAD_CXX" != "x"], [CXX="$PTHREAD_CXX"]) | |||||
CFLAGS="$CFLAGS $PTHREAD_CFLAGS" | |||||
LIBS="$PTHREAD_LIBS $LIBS" | |||||
AC_MSG_CHECKING([for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS]) | |||||
AC_LINK_IFELSE([AC_LANG_CALL([], [pthread_join])], [ax_pthread_ok=yes]) | |||||
AC_MSG_RESULT([$ax_pthread_ok]) | |||||
if test "x$ax_pthread_ok" = "xno"; then | |||||
PTHREAD_LIBS="" | |||||
PTHREAD_CFLAGS="" | |||||
fi | |||||
CC="$ax_pthread_save_CC" | |||||
CFLAGS="$ax_pthread_save_CFLAGS" | |||||
LIBS="$ax_pthread_save_LIBS" | |||||
fi | |||||
# We must check for the threads library under a number of different | |||||
# names; the ordering is very important because some systems | |||||
# (e.g. DEC) have both -lpthread and -lpthreads, where one of the | |||||
# libraries is broken (non-POSIX). | |||||
# Create a list of thread flags to try. Items with a "," contain both | |||||
# C compiler flags (before ",") and linker flags (after ","). Other items | |||||
# starting with a "-" are C compiler flags, and remaining items are | |||||
# library names, except for "none" which indicates that we try without | |||||
# any flags at all, and "pthread-config" which is a program returning | |||||
# the flags for the Pth emulation library. | |||||
ax_pthread_flags="pthreads none -Kthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" | |||||
# The ordering *is* (sometimes) important. Some notes on the | |||||
# individual items follow: | |||||
# pthreads: AIX (must check this before -lpthread) | |||||
# none: in case threads are in libc; should be tried before -Kthread and | |||||
# other compiler flags to prevent continual compiler warnings | |||||
# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) | |||||
# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads), Tru64 | |||||
# (Note: HP C rejects this with "bad form for `-t' option") | |||||
# -pthreads: Solaris/gcc (Note: HP C also rejects) | |||||
# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it | |||||
# doesn't hurt to check since this sometimes defines pthreads and | |||||
# -D_REENTRANT too), HP C (must be checked before -lpthread, which | |||||
# is present but should not be used directly; and before -mthreads, | |||||
# because the compiler interprets this as "-mt" + "-hreads") | |||||
# -mthreads: Mingw32/gcc, Lynx/gcc | |||||
# pthread: Linux, etcetera | |||||
# --thread-safe: KAI C++ | |||||
# pthread-config: use pthread-config program (for GNU Pth library) | |||||
case $target_os in | |||||
freebsd*) | |||||
# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) | |||||
# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) | |||||
ax_pthread_flags="-kthread lthread $ax_pthread_flags" | |||||
;; | |||||
hpux*) | |||||
# From the cc(1) man page: "[-mt] Sets various -D flags to enable | |||||
# multi-threading and also sets -lpthread." | |||||
ax_pthread_flags="-mt -pthread pthread $ax_pthread_flags" | |||||
;; | |||||
openedition*) | |||||
# IBM z/OS requires a feature-test macro to be defined in order to | |||||
# enable POSIX threads at all, so give the user a hint if this is | |||||
# not set. (We don't define these ourselves, as they can affect | |||||
# other portions of the system API in unpredictable ways.) | |||||
AC_EGREP_CPP([AX_PTHREAD_ZOS_MISSING], | |||||
[ | |||||
# if !defined(_OPEN_THREADS) && !defined(_UNIX03_THREADS) | |||||
AX_PTHREAD_ZOS_MISSING | |||||
# endif | |||||
], | |||||
[AC_MSG_WARN([IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support.])]) | |||||
;; | |||||
solaris*) | |||||
# On Solaris (at least, for some versions), libc contains stubbed | |||||
# (non-functional) versions of the pthreads routines, so link-based | |||||
# tests will erroneously succeed. (N.B.: The stubs are missing | |||||
# pthread_cleanup_push, or rather a function called by this macro, | |||||
# so we could check for that, but who knows whether they'll stub | |||||
# that too in a future libc.) So we'll check first for the | |||||
# standard Solaris way of linking pthreads (-mt -lpthread). | |||||
ax_pthread_flags="-mt,-lpthread pthread $ax_pthread_flags" | |||||
;; | |||||
esac | |||||
# Are we compiling with Clang? | |||||
AC_CACHE_CHECK([whether $CC is Clang], | |||||
[ax_cv_PTHREAD_CLANG], | |||||
[ax_cv_PTHREAD_CLANG=no | |||||
# Note that Autoconf sets GCC=yes for Clang as well as GCC | |||||
if test "x$GCC" = "xyes"; then | |||||
AC_EGREP_CPP([AX_PTHREAD_CC_IS_CLANG], | |||||
[/* Note: Clang 2.7 lacks __clang_[a-z]+__ */ | |||||
# if defined(__clang__) && defined(__llvm__) | |||||
AX_PTHREAD_CC_IS_CLANG | |||||
# endif | |||||
], | |||||
[ax_cv_PTHREAD_CLANG=yes]) | |||||
fi | |||||
]) | |||||
ax_pthread_clang="$ax_cv_PTHREAD_CLANG" | |||||
# GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC) | |||||
# Note that for GCC and Clang -pthread generally implies -lpthread, | |||||
# except when -nostdlib is passed. | |||||
# This is problematic using libtool to build C++ shared libraries with pthread: | |||||
# [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25460 | |||||
# [2] https://bugzilla.redhat.com/show_bug.cgi?id=661333 | |||||
# [3] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=468555 | |||||
# To solve this, first try -pthread together with -lpthread for GCC | |||||
AS_IF([test "x$GCC" = "xyes"], | |||||
[ax_pthread_flags="-pthread,-lpthread -pthread -pthreads $ax_pthread_flags"]) | |||||
# Clang takes -pthread (never supported any other flag), but we'll try with -lpthread first | |||||
AS_IF([test "x$ax_pthread_clang" = "xyes"], | |||||
[ax_pthread_flags="-pthread,-lpthread -pthread"]) | |||||
# The presence of a feature test macro requesting re-entrant function | |||||
# definitions is, on some systems, a strong hint that pthreads support is | |||||
# correctly enabled | |||||
case $target_os in | |||||
darwin* | hpux* | linux* | osf* | solaris*) | |||||
ax_pthread_check_macro="_REENTRANT" | |||||
;; | |||||
aix*) | |||||
ax_pthread_check_macro="_THREAD_SAFE" | |||||
;; | |||||
*) | |||||
ax_pthread_check_macro="--" | |||||
;; | |||||
esac | |||||
AS_IF([test "x$ax_pthread_check_macro" = "x--"], | |||||
[ax_pthread_check_cond=0], | |||||
[ax_pthread_check_cond="!defined($ax_pthread_check_macro)"]) | |||||
if test "x$ax_pthread_ok" = "xno"; then | |||||
for ax_pthread_try_flag in $ax_pthread_flags; do | |||||
case $ax_pthread_try_flag in | |||||
none) | |||||
AC_MSG_CHECKING([whether pthreads work without any flags]) | |||||
;; | |||||
*,*) | |||||
PTHREAD_CFLAGS=`echo $ax_pthread_try_flag | sed "s/^\(.*\),\(.*\)$/\1/"` | |||||
PTHREAD_LIBS=`echo $ax_pthread_try_flag | sed "s/^\(.*\),\(.*\)$/\2/"` | |||||
AC_MSG_CHECKING([whether pthreads work with "$PTHREAD_CFLAGS" and "$PTHREAD_LIBS"]) | |||||
;; | |||||
-*) | |||||
AC_MSG_CHECKING([whether pthreads work with $ax_pthread_try_flag]) | |||||
PTHREAD_CFLAGS="$ax_pthread_try_flag" | |||||
;; | |||||
pthread-config) | |||||
AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no]) | |||||
AS_IF([test "x$ax_pthread_config" = "xno"], [continue]) | |||||
PTHREAD_CFLAGS="`pthread-config --cflags`" | |||||
PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" | |||||
;; | |||||
*) | |||||
AC_MSG_CHECKING([for the pthreads library -l$ax_pthread_try_flag]) | |||||
PTHREAD_LIBS="-l$ax_pthread_try_flag" | |||||
;; | |||||
esac | |||||
ax_pthread_save_CFLAGS="$CFLAGS" | |||||
ax_pthread_save_LIBS="$LIBS" | |||||
CFLAGS="$CFLAGS $PTHREAD_CFLAGS" | |||||
LIBS="$PTHREAD_LIBS $LIBS" | |||||
# Check for various functions. We must include pthread.h, | |||||
# since some functions may be macros. (On the Sequent, we | |||||
# need a special flag -Kthread to make this header compile.) | |||||
# We check for pthread_join because it is in -lpthread on IRIX | |||||
# while pthread_create is in libc. We check for pthread_attr_init | |||||
# due to DEC craziness with -lpthreads. We check for | |||||
# pthread_cleanup_push because it is one of the few pthread | |||||
# functions on Solaris that doesn't have a non-functional libc stub. | |||||
# We try pthread_create on general principles. | |||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h> | |||||
# if $ax_pthread_check_cond | |||||
# error "$ax_pthread_check_macro must be defined" | |||||
# endif | |||||
static void *some_global = NULL; | |||||
static void routine(void *a) | |||||
{ | |||||
/* To avoid any unused-parameter or | |||||
unused-but-set-parameter warning. */ | |||||
some_global = a; | |||||
} | |||||
static void *start_routine(void *a) { return a; }], | |||||
[pthread_t th; pthread_attr_t attr; | |||||
pthread_create(&th, 0, start_routine, 0); | |||||
pthread_join(th, 0); | |||||
pthread_attr_init(&attr); | |||||
pthread_cleanup_push(routine, 0); | |||||
pthread_cleanup_pop(0) /* ; */])], | |||||
[ax_pthread_ok=yes], | |||||
[]) | |||||
CFLAGS="$ax_pthread_save_CFLAGS" | |||||
LIBS="$ax_pthread_save_LIBS" | |||||
AC_MSG_RESULT([$ax_pthread_ok]) | |||||
AS_IF([test "x$ax_pthread_ok" = "xyes"], [break]) | |||||
PTHREAD_LIBS="" | |||||
PTHREAD_CFLAGS="" | |||||
done | |||||
fi | |||||
# Clang needs special handling, because older versions handle the -pthread | |||||
# option in a rather... idiosyncratic way | |||||
if test "x$ax_pthread_clang" = "xyes"; then | |||||
# Clang takes -pthread; it has never supported any other flag | |||||
# (Note 1: This will need to be revisited if a system that Clang | |||||
# supports has POSIX threads in a separate library. This tends not | |||||
# to be the way of modern systems, but it's conceivable.) | |||||
# (Note 2: On some systems, notably Darwin, -pthread is not needed | |||||
# to get POSIX threads support; the API is always present and | |||||
# active. We could reasonably leave PTHREAD_CFLAGS empty. But | |||||
# -pthread does define _REENTRANT, and while the Darwin headers | |||||
# ignore this macro, third-party headers might not.) | |||||
# However, older versions of Clang make a point of warning the user | |||||
# that, in an invocation where only linking and no compilation is | |||||
# taking place, the -pthread option has no effect ("argument unused | |||||
# during compilation"). They expect -pthread to be passed in only | |||||
# when source code is being compiled. | |||||
# | |||||
# Problem is, this is at odds with the way Automake and most other | |||||
# C build frameworks function, which is that the same flags used in | |||||
# compilation (CFLAGS) are also used in linking. Many systems | |||||
# supported by AX_PTHREAD require exactly this for POSIX threads | |||||
# support, and in fact it is often not straightforward to specify a | |||||
# flag that is used only in the compilation phase and not in | |||||
# linking. Such a scenario is extremely rare in practice. | |||||
# | |||||
# Even though use of the -pthread flag in linking would only print | |||||
# a warning, this can be a nuisance for well-run software projects | |||||
# that build with -Werror. So if the active version of Clang has | |||||
# this misfeature, we search for an option to squash it. | |||||
AC_CACHE_CHECK([whether Clang needs flag to prevent "argument unused" warning when linking with -pthread], | |||||
[ax_cv_PTHREAD_CLANG_NO_WARN_FLAG], | |||||
[ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown | |||||
# Create an alternate version of $ac_link that compiles and | |||||
# links in two steps (.c -> .o, .o -> exe) instead of one | |||||
# (.c -> exe), because the warning occurs only in the second | |||||
# step | |||||
ax_pthread_save_ac_link="$ac_link" | |||||
ax_pthread_sed='s/conftest\.\$ac_ext/conftest.$ac_objext/g' | |||||
ax_pthread_link_step=`AS_ECHO(["$ac_link"]) | sed "$ax_pthread_sed"` | |||||
ax_pthread_2step_ac_link="($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)" | |||||
ax_pthread_save_CFLAGS="$CFLAGS" | |||||
for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do | |||||
AS_IF([test "x$ax_pthread_try" = "xunknown"], [break]) | |||||
CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS" | |||||
ac_link="$ax_pthread_save_ac_link" | |||||
AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])], | |||||
[ac_link="$ax_pthread_2step_ac_link" | |||||
AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])], | |||||
[break]) | |||||
]) | |||||
done | |||||
ac_link="$ax_pthread_save_ac_link" | |||||
CFLAGS="$ax_pthread_save_CFLAGS" | |||||
AS_IF([test "x$ax_pthread_try" = "x"], [ax_pthread_try=no]) | |||||
ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try" | |||||
]) | |||||
case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in | |||||
no | unknown) ;; | |||||
*) PTHREAD_CFLAGS="$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG $PTHREAD_CFLAGS" ;; | |||||
esac | |||||
fi # $ax_pthread_clang = yes | |||||
# Various other checks: | |||||
if test "x$ax_pthread_ok" = "xyes"; then | |||||
ax_pthread_save_CFLAGS="$CFLAGS" | |||||
ax_pthread_save_LIBS="$LIBS" | |||||
CFLAGS="$CFLAGS $PTHREAD_CFLAGS" | |||||
LIBS="$PTHREAD_LIBS $LIBS" | |||||
# Detect AIX lossage: JOINABLE attribute is called UNDETACHED. | |||||
AC_CACHE_CHECK([for joinable pthread attribute], | |||||
[ax_cv_PTHREAD_JOINABLE_ATTR], | |||||
[ax_cv_PTHREAD_JOINABLE_ATTR=unknown | |||||
for ax_pthread_attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do | |||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>], | |||||
[int attr = $ax_pthread_attr; return attr /* ; */])], | |||||
[ax_cv_PTHREAD_JOINABLE_ATTR=$ax_pthread_attr; break], | |||||
[]) | |||||
done | |||||
]) | |||||
AS_IF([test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xunknown" && \ | |||||
test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xPTHREAD_CREATE_JOINABLE" && \ | |||||
test "x$ax_pthread_joinable_attr_defined" != "xyes"], | |||||
[AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE], | |||||
[$ax_cv_PTHREAD_JOINABLE_ATTR], | |||||
[Define to necessary symbol if this constant | |||||
uses a non-standard name on your system.]) | |||||
ax_pthread_joinable_attr_defined=yes | |||||
]) | |||||
AC_CACHE_CHECK([whether more special flags are required for pthreads], | |||||
[ax_cv_PTHREAD_SPECIAL_FLAGS], | |||||
[ax_cv_PTHREAD_SPECIAL_FLAGS=no | |||||
case $target_os in | |||||
solaris*) | |||||
ax_cv_PTHREAD_SPECIAL_FLAGS="-D_POSIX_PTHREAD_SEMANTICS" | |||||
;; | |||||
esac | |||||
]) | |||||
AS_IF([test "x$ax_cv_PTHREAD_SPECIAL_FLAGS" != "xno" && \ | |||||
test "x$ax_pthread_special_flags_added" != "xyes"], | |||||
[PTHREAD_CFLAGS="$ax_cv_PTHREAD_SPECIAL_FLAGS $PTHREAD_CFLAGS" | |||||
ax_pthread_special_flags_added=yes]) | |||||
AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT], | |||||
[ax_cv_PTHREAD_PRIO_INHERIT], | |||||
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]], | |||||
[[int i = PTHREAD_PRIO_INHERIT; | |||||
return i;]])], | |||||
[ax_cv_PTHREAD_PRIO_INHERIT=yes], | |||||
[ax_cv_PTHREAD_PRIO_INHERIT=no]) | |||||
]) | |||||
AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes" && \ | |||||
test "x$ax_pthread_prio_inherit_defined" != "xyes"], | |||||
[AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.]) | |||||
ax_pthread_prio_inherit_defined=yes | |||||
]) | |||||
CFLAGS="$ax_pthread_save_CFLAGS" | |||||
LIBS="$ax_pthread_save_LIBS" | |||||
# More AIX lossage: compile with *_r variant | |||||
if test "x$GCC" != "xyes"; then | |||||
case $target_os in | |||||
aix*) | |||||
AS_CASE(["x/$CC"], | |||||
[x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6], | |||||
[#handle absolute path differently from PATH based program lookup | |||||
AS_CASE(["x$CC"], | |||||
[x/*], | |||||
[ | |||||
AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"]) | |||||
AS_IF([test "x${CXX}" != "x"], [AS_IF([AS_EXECUTABLE_P([${CXX}_r])],[PTHREAD_CXX="${CXX}_r"])]) | |||||
], | |||||
[ | |||||
AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC]) | |||||
AS_IF([test "x${CXX}" != "x"], [AC_CHECK_PROGS([PTHREAD_CXX],[${CXX}_r],[$CXX])]) | |||||
] | |||||
) | |||||
]) | |||||
;; | |||||
esac | |||||
fi | |||||
fi | |||||
test -n "$PTHREAD_CC" || PTHREAD_CC="$CC" | |||||
test -n "$PTHREAD_CXX" || PTHREAD_CXX="$CXX" | |||||
AC_SUBST([PTHREAD_LIBS]) | |||||
AC_SUBST([PTHREAD_CFLAGS]) | |||||
AC_SUBST([PTHREAD_CC]) | |||||
AC_SUBST([PTHREAD_CXX]) | |||||
# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: | |||||
if test "x$ax_pthread_ok" = "xyes"; then | |||||
ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1]) | |||||
: | |||||
else | |||||
ax_pthread_ok=no | |||||
$2 | |||||
fi | |||||
AC_LANG_POP | |||||
])dnl AX_PTHREAD |
@ -0,0 +1,99 @@ | |||||
# | |||||
# FreeType 2 configuration file to detect a UNIX host platform. | |||||
# | |||||
# Copyright (C) 1996-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
.PHONY: setup | |||||
ifeq ($(PLATFORM),ansi) | |||||
# Note: this test is duplicated in "builds/toplevel.mk". | |||||
# | |||||
is_unix := $(strip $(wildcard /sbin/init) \ | |||||
$(wildcard /usr/sbin/init) \ | |||||
$(wildcard /dev/null) \ | |||||
$(wildcard /hurd/auth)) | |||||
ifneq ($(is_unix),) | |||||
PLATFORM := unix | |||||
endif # test is_unix | |||||
endif # test PLATFORM ansi | |||||
ifeq ($(PLATFORM),unix) | |||||
COPY := cp | |||||
DELETE := rm -f | |||||
CAT := cat | |||||
# If `devel' is the requested target, we use a special configuration | |||||
# file named `unix-dev.mk'. It disables optimization and libtool. | |||||
# | |||||
ifneq ($(findstring devel,$(MAKECMDGOALS)),) | |||||
CONFIG_FILE := unix-dev.mk | |||||
CC := gcc | |||||
.PHONY: devel | |||||
devel: setup | |||||
@: | |||||
else | |||||
# If `lcc' is the requested target, we use a special configuration | |||||
# file named `unix-lcc.mk'. It disables libtool for LCC. | |||||
# | |||||
ifneq ($(findstring lcc,$(MAKECMDGOALS)),) | |||||
CONFIG_FILE := unix-lcc.mk | |||||
CC := lcc | |||||
.PHONY: lcc | |||||
lcc: setup | |||||
@: | |||||
else | |||||
# If a Unix platform is detected, the configure script is called and | |||||
# `unix-def.mk' together with `unix-cc.mk' is created. | |||||
# | |||||
# Arguments to `configure' should be in the CFG variable. Example: | |||||
# | |||||
# make CFG="--prefix=/usr --disable-static" | |||||
# | |||||
# If you need to set CFLAGS or LDFLAGS, do it here also. | |||||
# | |||||
# Feel free to add support for other platform specific compilers in | |||||
# this directory (e.g. solaris.mk + changes here to detect the | |||||
# platform). | |||||
# | |||||
CONFIG_FILE := unix.mk | |||||
must_configure := 1 | |||||
.PHONY: unix | |||||
unix: setup | |||||
@: | |||||
endif | |||||
endif | |||||
have_Makefile := $(wildcard $(OBJ_DIR)/Makefile) | |||||
setup: std_setup | |||||
ifdef must_configure | |||||
ifneq ($(have_Makefile),) | |||||
# we are building FT2 not in the src tree | |||||
$(TOP_DIR)/builds/unix/configure $(value CFG) | |||||
else | |||||
cd builds/unix; \ | |||||
./configure $(value CFG) | |||||
endif | |||||
endif | |||||
endif # test PLATFORM unix | |||||
# EOF |
@ -0,0 +1,211 @@ | |||||
#! /bin/sh | |||||
# | |||||
# Copyright (C) 2000-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
LC_ALL=C | |||||
export LC_ALL | |||||
# if `pkg-config' is available, use values from `freetype2.pc' | |||||
%PKG_CONFIG% --atleast-pkgconfig-version 0.24 >/dev/null 2>&1 | |||||
if test $? -eq 0 ; then | |||||
# note that option `--variable' is not affected by the | |||||
# PKG_CONFIG_SYSROOT_DIR environment variable | |||||
if test "x$SYSROOT" != "x" ; then | |||||
PKG_CONFIG_SYSROOT_DIR="$SYSROOT" | |||||
export PKG_CONFIG_SYSROOT_DIR | |||||
fi | |||||
prefix=`%PKG_CONFIG% --variable prefix freetype2` | |||||
exec_prefix=`%PKG_CONFIG% --variable exec_prefix freetype2` | |||||
includedir=`%PKG_CONFIG% --variable includedir freetype2` | |||||
libdir=`%PKG_CONFIG% --variable libdir freetype2` | |||||
version=`%PKG_CONFIG% --modversion freetype2` | |||||
cflags=`%PKG_CONFIG% --cflags freetype2` | |||||
dynamic_libs=`%PKG_CONFIG% --libs freetype2` | |||||
static_libs=`%PKG_CONFIG% --static --libs freetype2` | |||||
else | |||||
prefix="%prefix%" | |||||
exec_prefix="%exec_prefix%" | |||||
includedir="%includedir%" | |||||
libdir="%libdir%" | |||||
version=%ft_version% | |||||
cflags="-I${SYSROOT}$includedir/freetype2" | |||||
dynamic_libs="-lfreetype" | |||||
static_libs="%LIBSSTATIC_CONFIG%" | |||||
if test "${SYSROOT}$libdir" != "/usr/lib" && | |||||
test "${SYSROOT}$libdir" != "/usr/lib64" ; then | |||||
libs_L="-L${SYSROOT}$libdir" | |||||
fi | |||||
fi | |||||
orig_prefix=$prefix | |||||
orig_exec_prefix=$exec_prefix | |||||
orig_includedir=$includedir | |||||
orig_libdir=$libdir | |||||
include_suffix=`echo $includedir | sed "s|$prefix||"` | |||||
lib_suffix=`echo $libdir | sed "s|$exec_prefix||"` | |||||
usage() | |||||
{ | |||||
cat <<EOF | |||||
Usage: freetype-config [OPTION]... | |||||
Get FreeType compilation and linking information. | |||||
Options: | |||||
--prefix display \`--prefix' value used for building the | |||||
FreeType library | |||||
--prefix=PREFIX override \`--prefix' value with PREFIX | |||||
--exec-prefix display \`--exec-prefix' value used for building | |||||
the FreeType library | |||||
--exec-prefix=EPREFIX override \`--exec-prefix' value with EPREFIX | |||||
--version display libtool version of the FreeType library | |||||
--ftversion display FreeType version number | |||||
--libs display flags for linking with the FreeType library | |||||
--libtool display library name for linking with libtool | |||||
--cflags display flags for compiling with the FreeType | |||||
library | |||||
--static make command line options display flags | |||||
for static linking | |||||
--help display this help and exit | |||||
EOF | |||||
exit $1 | |||||
} | |||||
if test $# -eq 0 ; then | |||||
usage 1 1>&2 | |||||
fi | |||||
while test $# -gt 0 ; do | |||||
case "$1" in | |||||
-*=*) | |||||
optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` | |||||
;; | |||||
*) | |||||
optarg= | |||||
;; | |||||
esac | |||||
case $1 in | |||||
--prefix=*) | |||||
prefix=$optarg | |||||
local_prefix=yes | |||||
;; | |||||
--prefix) | |||||
echo_prefix=yes | |||||
;; | |||||
--exec-prefix=*) | |||||
exec_prefix=$optarg | |||||
exec_prefix_set=yes | |||||
local_prefix=yes | |||||
;; | |||||
--exec-prefix) | |||||
echo_exec_prefix=yes | |||||
;; | |||||
--version) | |||||
echo_version=yes | |||||
break | |||||
;; | |||||
--ftversion) | |||||
echo_ft_version=yes | |||||
;; | |||||
--cflags) | |||||
echo_cflags=yes | |||||
;; | |||||
--libs) | |||||
echo_libs=yes | |||||
;; | |||||
--libtool) | |||||
echo_libtool=yes | |||||
;; | |||||
--static) | |||||
show_static=yes | |||||
;; | |||||
--help) | |||||
usage 0 | |||||
;; | |||||
*) | |||||
usage 1 1>&2 | |||||
;; | |||||
esac | |||||
shift | |||||
done | |||||
if test "$local_prefix" = "yes" ; then | |||||
if test "$exec_prefix_set" != "yes" ; then | |||||
exec_prefix=$prefix | |||||
fi | |||||
fi | |||||
if test "$local_prefix" = "yes" ; then | |||||
includedir=${prefix}${include_suffix} | |||||
if test "$exec_prefix_set" = "yes" ; then | |||||
libdir=${exec_prefix}${lib_suffix} | |||||
else | |||||
libdir=${prefix}${lib_suffix} | |||||
fi | |||||
fi | |||||
if test "$echo_version" = "yes" ; then | |||||
echo $version | |||||
fi | |||||
if test "$echo_prefix" = "yes" ; then | |||||
echo ${SYSROOT}$prefix | |||||
fi | |||||
if test "$echo_exec_prefix" = "yes" ; then | |||||
echo ${SYSROOT}$exec_prefix | |||||
fi | |||||
if test "$echo_ft_version" = "yes" ; then | |||||
major=`grep define ${SYSROOT}$includedir/freetype2/freetype/freetype.h \ | |||||
| grep FREETYPE_MAJOR \ | |||||
| sed 's/.*[ ]\([0-9][0-9]*\).*/\1/'` | |||||
minor=`grep define ${SYSROOT}$includedir/freetype2/freetype/freetype.h \ | |||||
| grep FREETYPE_MINOR \ | |||||
| sed 's/.*[ ]\([0-9][0-9]*\).*/\1/'` | |||||
patch=`grep define ${SYSROOT}$includedir/freetype2/freetype/freetype.h \ | |||||
| grep FREETYPE_PATCH \ | |||||
| sed 's/.*[ ]\([0-9][0-9]*\).*/\1/'` | |||||
echo $major.$minor.$patch | |||||
fi | |||||
if test "$echo_cflags" = "yes" ; then | |||||
echo $cflags | sed "s|$orig_includedir/freetype2|$includedir/freetype2|" | |||||
fi | |||||
if test "$echo_libs" = "yes" ; then | |||||
if test "$show_static" = "yes" ; then | |||||
libs="$libs_L $static_libs" | |||||
else | |||||
libs="$libs_L $dynamic_libs" | |||||
fi | |||||
echo $libs | sed "s|$orig_libdir|$libdir|" | |||||
fi | |||||
if test "$echo_libtool" = "yes" ; then | |||||
echo ${SYSROOT}$libdir/libfreetype.la | |||||
fi | |||||
# EOF |
@ -0,0 +1,14 @@ | |||||
prefix=%prefix% | |||||
exec_prefix=%exec_prefix% | |||||
libdir=%libdir% | |||||
includedir=%includedir% | |||||
Name: FreeType 2 | |||||
URL: https://freetype.org | |||||
Description: A free, high-quality, and portable font engine. | |||||
Version: %ft_version% | |||||
Requires: | |||||
Requires.private: %REQUIRES_PRIVATE% | |||||
Libs: -L${libdir} -lfreetype | |||||
Libs.private: %LIBS_PRIVATE% | |||||
Cflags: -I${includedir}/freetype2 |
@ -0,0 +1,194 @@ | |||||
# Configure paths for FreeType2 | |||||
# Marcelo Magallon 2001-10-26, based on `gtk.m4` by Owen Taylor | |||||
# | |||||
# Copyright (C) 2001-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
# | |||||
# As a special exception to the FreeType project license, this file may be | |||||
# distributed as part of a program that contains a configuration script | |||||
# generated by Autoconf, under the same distribution terms as the rest of | |||||
# that program. | |||||
# | |||||
# serial 6 | |||||
# AC_CHECK_FT2([MINIMUM-VERSION [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) | |||||
# Test for FreeType 2, and define FT2_CFLAGS and FT2_LIBS. | |||||
# MINIMUM-VERSION is what libtool reports; the default is '7.0.1' (this is | |||||
# FreeType 2.0.4). | |||||
# | |||||
# To make this code work with older autoconf versions, `AS_HELP_STRING` is | |||||
# not quoted. | |||||
# | |||||
AC_DEFUN([AC_CHECK_FT2], | |||||
[# Get the cflags and libraries from the freetype-config script | |||||
# | |||||
AC_ARG_WITH([ft-prefix], | |||||
AS_HELP_STRING([--with-ft-prefix=PREFIX], | |||||
[Prefix where FreeType is installed (optional)]), | |||||
[ft_config_prefix="$withval"], | |||||
[ft_config_prefix=""]) | |||||
AC_ARG_WITH([ft-exec-prefix], | |||||
AS_HELP_STRING([--with-ft-exec-prefix=PREFIX], | |||||
[Exec prefix where FreeType is installed (optional)]), | |||||
[ft_config_exec_prefix="$withval"], | |||||
[ft_config_exec_prefix=""]) | |||||
AC_ARG_ENABLE([freetypetest], | |||||
AS_HELP_STRING([--disable-freetypetest], | |||||
[Do not try to compile and run a test FreeType program]), | |||||
[], | |||||
[enable_fttest=yes]) | |||||
if test x$ft_config_exec_prefix != x ; then | |||||
ft_config_args="$ft_config_args --exec-prefix=$ft_config_exec_prefix" | |||||
if test x${FT2_CONFIG+set} != xset ; then | |||||
FT2_CONFIG=$ft_config_exec_prefix/bin/freetype-config | |||||
fi | |||||
fi | |||||
if test x$ft_config_prefix != x ; then | |||||
ft_config_args="$ft_config_args --prefix=$ft_config_prefix" | |||||
if test x${FT2_CONFIG+set} != xset ; then | |||||
FT2_CONFIG=$ft_config_prefix/bin/freetype-config | |||||
fi | |||||
fi | |||||
if test "x$FT2_CONFIG" = x ; then | |||||
AC_PATH_TOOL([FT2_CONFIG], [freetype-config], [no]) | |||||
fi | |||||
min_ft_version=m4_if([$1], [], [7.0.1], [$1]) | |||||
AC_MSG_CHECKING([for FreeType -- version >= $min_ft_version]) | |||||
no_ft="" | |||||
if test "$FT2_CONFIG" = "no" ; then | |||||
no_ft=yes | |||||
else | |||||
FT2_CFLAGS=`$FT2_CONFIG $ft_config_args --cflags` | |||||
FT2_LIBS=`$FT2_CONFIG $ft_config_args --libs` | |||||
ft_config_major_version=`$FT2_CONFIG $ft_config_args --version | \ | |||||
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` | |||||
ft_config_minor_version=`$FT2_CONFIG $ft_config_args --version | \ | |||||
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` | |||||
ft_config_micro_version=`$FT2_CONFIG $ft_config_args --version | \ | |||||
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` | |||||
ft_min_major_version=`echo $min_ft_version | \ | |||||
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` | |||||
ft_min_minor_version=`echo $min_ft_version | \ | |||||
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` | |||||
ft_min_micro_version=`echo $min_ft_version | \ | |||||
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` | |||||
if test x$enable_fttest = xyes ; then | |||||
ft_config_is_lt="" | |||||
if test $ft_config_major_version -lt $ft_min_major_version ; then | |||||
ft_config_is_lt=yes | |||||
else | |||||
if test $ft_config_major_version -eq $ft_min_major_version ; then | |||||
if test $ft_config_minor_version -lt $ft_min_minor_version ; then | |||||
ft_config_is_lt=yes | |||||
else | |||||
if test $ft_config_minor_version -eq $ft_min_minor_version ; then | |||||
if test $ft_config_micro_version -lt $ft_min_micro_version ; then | |||||
ft_config_is_lt=yes | |||||
fi | |||||
fi | |||||
fi | |||||
fi | |||||
fi | |||||
if test x$ft_config_is_lt = xyes ; then | |||||
no_ft=yes | |||||
else | |||||
ac_save_CFLAGS="$CFLAGS" | |||||
ac_save_LIBS="$LIBS" | |||||
CFLAGS="$CFLAGS $FT2_CFLAGS" | |||||
LIBS="$FT2_LIBS $LIBS" | |||||
# | |||||
# Sanity checks for the results of freetype-config to some extent. | |||||
# | |||||
AC_RUN_IFELSE([ | |||||
AC_LANG_SOURCE([[ | |||||
#include <ft2build.h> | |||||
#include <freetype/freetype.h> | |||||
#include <stdio.h> | |||||
#include <stdlib.h> | |||||
int | |||||
main() | |||||
{ | |||||
FT_Library library; | |||||
FT_Error error; | |||||
error = FT_Init_FreeType(&library); | |||||
if (error) | |||||
return 1; | |||||
else | |||||
{ | |||||
FT_Done_FreeType(library); | |||||
return 0; | |||||
} | |||||
} | |||||
]]) | |||||
], | |||||
[], | |||||
[no_ft=yes], | |||||
[echo $ECHO_N "cross compiling; assuming OK... $ECHO_C"]) | |||||
CFLAGS="$ac_save_CFLAGS" | |||||
LIBS="$ac_save_LIBS" | |||||
fi # test $ft_config_version -lt $ft_min_version | |||||
fi # test x$enable_fttest = xyes | |||||
fi # test "$FT2_CONFIG" = "no" | |||||
if test x$no_ft = x ; then | |||||
AC_MSG_RESULT([yes]) | |||||
m4_if([$2], [], [:], [$2]) | |||||
else | |||||
AC_MSG_RESULT([no]) | |||||
if test "$FT2_CONFIG" = "no" ; then | |||||
AC_MSG_WARN([ | |||||
The freetype-config script installed by FreeType 2 could not be found. | |||||
If FreeType 2 was installed in PREFIX, make sure PREFIX/bin is in | |||||
your path, or set the FT2_CONFIG environment variable to the | |||||
full path to freetype-config. | |||||
]) | |||||
else | |||||
if test x$ft_config_is_lt = xyes ; then | |||||
AC_MSG_WARN([ | |||||
Your installed version of the FreeType 2 library is too old. | |||||
If you have different versions of FreeType 2, make sure that | |||||
correct values for --with-ft-prefix or --with-ft-exec-prefix | |||||
are used, or set the FT2_CONFIG environment variable to the | |||||
full path to freetype-config. | |||||
]) | |||||
else | |||||
AC_MSG_WARN([ | |||||
The FreeType test program failed to run. If your system uses | |||||
shared libraries and they are installed outside the normal | |||||
system library path, make sure the variable LD_LIBRARY_PATH | |||||
(or whatever is appropriate for your system) is correctly set. | |||||
]) | |||||
fi | |||||
fi | |||||
FT2_CFLAGS="" | |||||
FT2_LIBS="" | |||||
m4_if([$3], [], [:], [$3]) | |||||
fi | |||||
AC_SUBST([FT2_CFLAGS]) | |||||
AC_SUBST([FT2_LIBS])]) | |||||
# end of freetype2.m4 |
@ -0,0 +1,32 @@ | |||||
## FreeType specific autoconf tests | |||||
# | |||||
# Copyright (C) 2002-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
# serial 2 | |||||
AC_DEFUN([FT_MUNMAP_PARAM], | |||||
[AC_MSG_CHECKING([for munmap's first parameter type]) | |||||
AC_COMPILE_IFELSE([ | |||||
AC_LANG_SOURCE([[ | |||||
#include <unistd.h> | |||||
#include <sys/mman.h> | |||||
int munmap(void *, size_t); | |||||
]]) | |||||
], | |||||
[AC_MSG_RESULT([void *]) | |||||
AC_DEFINE([MUNMAP_USES_VOIDP], | |||||
[], | |||||
[Define to 1 if the first argument of munmap is of type void *])], | |||||
[AC_MSG_RESULT([char *])]) | |||||
]) | |||||
# end of ft-munmap.m4 |
@ -0,0 +1,62 @@ | |||||
/**************************************************************************** | |||||
* | |||||
* ftconfig.h.in | |||||
* | |||||
* UNIX-specific configuration file (specification only). | |||||
* | |||||
* Copyright (C) 1996-2021 by | |||||
* David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
* | |||||
* This file is part of the FreeType project, and may only be used, | |||||
* modified, and distributed under the terms of the FreeType project | |||||
* license, LICENSE.TXT. By continuing to use, modify, or distribute | |||||
* this file you indicate that you have read the license and | |||||
* understand and accept it fully. | |||||
* | |||||
*/ | |||||
/************************************************************************** | |||||
* | |||||
* This header file contains a number of macro definitions that are used by | |||||
* the rest of the engine. Most of the macros here are automatically | |||||
* determined at compile time, and you should not need to change it to port | |||||
* FreeType, except to compile the library with a non-ANSI compiler. | |||||
* | |||||
* Note however that if some specific modifications are needed, we advise | |||||
* you to place a modified copy in your build directory. | |||||
* | |||||
* The build directory is usually `builds/<system>`, and contains | |||||
* system-specific files that are always included first when building the | |||||
* library. | |||||
* | |||||
*/ | |||||
#ifndef FTCONFIG_H_ | |||||
#define FTCONFIG_H_ | |||||
#include <ft2build.h> | |||||
#include FT_CONFIG_OPTIONS_H | |||||
#include FT_CONFIG_STANDARD_LIBRARY_H | |||||
#undef HAVE_UNISTD_H | |||||
#undef HAVE_FCNTL_H | |||||
#undef FT_USE_AUTOCONF_SIZEOF_TYPES | |||||
#ifdef FT_USE_AUTOCONF_SIZEOF_TYPES | |||||
#undef SIZEOF_INT | |||||
#undef SIZEOF_LONG | |||||
#define FT_SIZEOF_INT SIZEOF_INT | |||||
#define FT_SIZEOF_LONG SIZEOF_LONG | |||||
#endif /* FT_USE_AUTOCONF_SIZEOF_TYPES */ | |||||
#include <freetype/config/integer-types.h> | |||||
#include <freetype/config/public-macros.h> | |||||
#include <freetype/config/mac-support.h> | |||||
#endif /* FTCONFIG_H_ */ | |||||
/* END */ |
@ -0,0 +1,437 @@ | |||||
/**************************************************************************** | |||||
* | |||||
* ftsystem.c | |||||
* | |||||
* Unix-specific FreeType low-level system interface (body). | |||||
* | |||||
* Copyright (C) 1996-2021 by | |||||
* David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
* | |||||
* This file is part of the FreeType project, and may only be used, | |||||
* modified, and distributed under the terms of the FreeType project | |||||
* license, LICENSE.TXT. By continuing to use, modify, or distribute | |||||
* this file you indicate that you have read the license and | |||||
* understand and accept it fully. | |||||
* | |||||
*/ | |||||
#include <ft2build.h> | |||||
/* we use our special ftconfig.h file, not the standard one */ | |||||
#include FT_CONFIG_CONFIG_H | |||||
#include <freetype/internal/ftdebug.h> | |||||
#include <freetype/ftsystem.h> | |||||
#include <freetype/fterrors.h> | |||||
#include <freetype/fttypes.h> | |||||
#include <freetype/internal/ftstream.h> | |||||
/* memory-mapping includes and definitions */ | |||||
#ifdef HAVE_UNISTD_H | |||||
#include <unistd.h> | |||||
#endif | |||||
#include <sys/mman.h> | |||||
#ifndef MAP_FILE | |||||
#define MAP_FILE 0x00 | |||||
#endif | |||||
#ifdef MUNMAP_USES_VOIDP | |||||
#define MUNMAP_ARG_CAST void * | |||||
#else | |||||
#define MUNMAP_ARG_CAST char * | |||||
#endif | |||||
#ifdef NEED_MUNMAP_DECL | |||||
#ifdef __cplusplus | |||||
extern "C" | |||||
#else | |||||
extern | |||||
#endif | |||||
int | |||||
munmap( char* addr, | |||||
int len ); | |||||
#define MUNMAP_ARG_CAST char * | |||||
#endif /* NEED_DECLARATION_MUNMAP */ | |||||
#include <sys/types.h> | |||||
#include <sys/stat.h> | |||||
#ifdef HAVE_FCNTL_H | |||||
#include <fcntl.h> | |||||
#endif | |||||
#include <stdio.h> | |||||
#include <stdlib.h> | |||||
#include <string.h> | |||||
#include <errno.h> | |||||
/************************************************************************** | |||||
* | |||||
* MEMORY MANAGEMENT INTERFACE | |||||
* | |||||
*/ | |||||
/************************************************************************** | |||||
* | |||||
* It is not necessary to do any error checking for the | |||||
* allocation-related functions. This will be done by the higher level | |||||
* routines like ft_mem_alloc() or ft_mem_realloc(). | |||||
* | |||||
*/ | |||||
/************************************************************************** | |||||
* | |||||
* @Function: | |||||
* ft_alloc | |||||
* | |||||
* @Description: | |||||
* The memory allocation function. | |||||
* | |||||
* @Input: | |||||
* memory :: | |||||
* A pointer to the memory object. | |||||
* | |||||
* size :: | |||||
* The requested size in bytes. | |||||
* | |||||
* @Return: | |||||
* The address of newly allocated block. | |||||
*/ | |||||
FT_CALLBACK_DEF( void* ) | |||||
ft_alloc( FT_Memory memory, | |||||
long size ) | |||||
{ | |||||
FT_UNUSED( memory ); | |||||
return malloc( size ); | |||||
} | |||||
/************************************************************************** | |||||
* | |||||
* @Function: | |||||
* ft_realloc | |||||
* | |||||
* @Description: | |||||
* The memory reallocation function. | |||||
* | |||||
* @Input: | |||||
* memory :: | |||||
* A pointer to the memory object. | |||||
* | |||||
* cur_size :: | |||||
* The current size of the allocated memory block. | |||||
* | |||||
* new_size :: | |||||
* The newly requested size in bytes. | |||||
* | |||||
* block :: | |||||
* The current address of the block in memory. | |||||
* | |||||
* @Return: | |||||
* The address of the reallocated memory block. | |||||
*/ | |||||
FT_CALLBACK_DEF( void* ) | |||||
ft_realloc( FT_Memory memory, | |||||
long cur_size, | |||||
long new_size, | |||||
void* block ) | |||||
{ | |||||
FT_UNUSED( memory ); | |||||
FT_UNUSED( cur_size ); | |||||
return realloc( block, new_size ); | |||||
} | |||||
/************************************************************************** | |||||
* | |||||
* @Function: | |||||
* ft_free | |||||
* | |||||
* @Description: | |||||
* The memory release function. | |||||
* | |||||
* @Input: | |||||
* memory :: | |||||
* A pointer to the memory object. | |||||
* | |||||
* block :: | |||||
* The address of block in memory to be freed. | |||||
*/ | |||||
FT_CALLBACK_DEF( void ) | |||||
ft_free( FT_Memory memory, | |||||
void* block ) | |||||
{ | |||||
FT_UNUSED( memory ); | |||||
free( block ); | |||||
} | |||||
/************************************************************************** | |||||
* | |||||
* RESOURCE MANAGEMENT INTERFACE | |||||
* | |||||
*/ | |||||
/************************************************************************** | |||||
* | |||||
* The macro FT_COMPONENT is used in trace mode. It is an implicit | |||||
* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log | |||||
* messages during execution. | |||||
*/ | |||||
#undef FT_COMPONENT | |||||
#define FT_COMPONENT io | |||||
/* We use the macro STREAM_FILE for convenience to extract the */ | |||||
/* system-specific stream handle from a given FreeType stream object */ | |||||
#define STREAM_FILE( stream ) ( (FILE*)stream->descriptor.pointer ) | |||||
/************************************************************************** | |||||
* | |||||
* @Function: | |||||
* ft_close_stream_by_munmap | |||||
* | |||||
* @Description: | |||||
* The function to close a stream which is opened by mmap. | |||||
* | |||||
* @Input: | |||||
* stream :: A pointer to the stream object. | |||||
*/ | |||||
FT_CALLBACK_DEF( void ) | |||||
ft_close_stream_by_munmap( FT_Stream stream ) | |||||
{ | |||||
munmap( (MUNMAP_ARG_CAST)stream->descriptor.pointer, stream->size ); | |||||
stream->descriptor.pointer = NULL; | |||||
stream->size = 0; | |||||
stream->base = 0; | |||||
} | |||||
/************************************************************************** | |||||
* | |||||
* @Function: | |||||
* ft_close_stream_by_free | |||||
* | |||||
* @Description: | |||||
* The function to close a stream which is created by ft_alloc. | |||||
* | |||||
* @Input: | |||||
* stream :: A pointer to the stream object. | |||||
*/ | |||||
FT_CALLBACK_DEF( void ) | |||||
ft_close_stream_by_free( FT_Stream stream ) | |||||
{ | |||||
ft_free( NULL, stream->descriptor.pointer ); | |||||
stream->descriptor.pointer = NULL; | |||||
stream->size = 0; | |||||
stream->base = 0; | |||||
} | |||||
/* documentation is in ftobjs.h */ | |||||
FT_BASE_DEF( FT_Error ) | |||||
FT_Stream_Open( FT_Stream stream, | |||||
const char* filepathname ) | |||||
{ | |||||
int file; | |||||
struct stat stat_buf; | |||||
if ( !stream ) | |||||
return FT_THROW( Invalid_Stream_Handle ); | |||||
/* open the file */ | |||||
file = open( filepathname, O_RDONLY ); | |||||
if ( file < 0 ) | |||||
{ | |||||
FT_ERROR(( "FT_Stream_Open:" )); | |||||
FT_ERROR(( " could not open `%s'\n", filepathname )); | |||||
return FT_THROW( Cannot_Open_Resource ); | |||||
} | |||||
/* Here we ensure that a "fork" will _not_ duplicate */ | |||||
/* our opened input streams on Unix. This is critical */ | |||||
/* since it avoids some (possible) access control */ | |||||
/* issues and cleans up the kernel file table a bit. */ | |||||
/* */ | |||||
#ifdef F_SETFD | |||||
#ifdef FD_CLOEXEC | |||||
(void)fcntl( file, F_SETFD, FD_CLOEXEC ); | |||||
#else | |||||
(void)fcntl( file, F_SETFD, 1 ); | |||||
#endif /* FD_CLOEXEC */ | |||||
#endif /* F_SETFD */ | |||||
if ( fstat( file, &stat_buf ) < 0 ) | |||||
{ | |||||
FT_ERROR(( "FT_Stream_Open:" )); | |||||
FT_ERROR(( " could not `fstat' file `%s'\n", filepathname )); | |||||
goto Fail_Map; | |||||
} | |||||
/* XXX: TODO -- real 64bit platform support */ | |||||
/* */ | |||||
/* `stream->size' is typedef'd to unsigned long (in `ftsystem.h'); */ | |||||
/* `stat_buf.st_size', however, is usually typedef'd to off_t */ | |||||
/* (in sys/stat.h). */ | |||||
/* On some platforms, the former is 32bit and the latter is 64bit. */ | |||||
/* To avoid overflow caused by fonts in huge files larger than */ | |||||
/* 2GB, do a test. Temporary fix proposed by Sean McBride. */ | |||||
/* */ | |||||
if ( stat_buf.st_size > LONG_MAX ) | |||||
{ | |||||
FT_ERROR(( "FT_Stream_Open: file is too big\n" )); | |||||
goto Fail_Map; | |||||
} | |||||
else if ( stat_buf.st_size == 0 ) | |||||
{ | |||||
FT_ERROR(( "FT_Stream_Open: zero-length file\n" )); | |||||
goto Fail_Map; | |||||
} | |||||
/* This cast potentially truncates a 64bit to 32bit! */ | |||||
stream->size = (unsigned long)stat_buf.st_size; | |||||
stream->pos = 0; | |||||
stream->base = (unsigned char *)mmap( NULL, | |||||
stream->size, | |||||
PROT_READ, | |||||
MAP_FILE | MAP_PRIVATE, | |||||
file, | |||||
0 ); | |||||
/* on some RTOS, mmap might return 0 */ | |||||
if ( (long)stream->base != -1 && stream->base != NULL ) | |||||
stream->close = ft_close_stream_by_munmap; | |||||
else | |||||
{ | |||||
ssize_t total_read_count; | |||||
FT_ERROR(( "FT_Stream_Open:" )); | |||||
FT_ERROR(( " could not `mmap' file `%s'\n", filepathname )); | |||||
stream->base = (unsigned char*)ft_alloc( NULL, stream->size ); | |||||
if ( !stream->base ) | |||||
{ | |||||
FT_ERROR(( "FT_Stream_Open:" )); | |||||
FT_ERROR(( " could not `alloc' memory\n" )); | |||||
goto Fail_Map; | |||||
} | |||||
total_read_count = 0; | |||||
do | |||||
{ | |||||
ssize_t read_count; | |||||
read_count = read( file, | |||||
stream->base + total_read_count, | |||||
stream->size - total_read_count ); | |||||
if ( read_count <= 0 ) | |||||
{ | |||||
if ( read_count == -1 && errno == EINTR ) | |||||
continue; | |||||
FT_ERROR(( "FT_Stream_Open:" )); | |||||
FT_ERROR(( " error while `read'ing file `%s'\n", filepathname )); | |||||
goto Fail_Read; | |||||
} | |||||
total_read_count += read_count; | |||||
} while ( (unsigned long)total_read_count != stream->size ); | |||||
stream->close = ft_close_stream_by_free; | |||||
} | |||||
close( file ); | |||||
stream->descriptor.pointer = stream->base; | |||||
stream->pathname.pointer = (char*)filepathname; | |||||
stream->read = 0; | |||||
FT_TRACE1(( "FT_Stream_Open:" )); | |||||
FT_TRACE1(( " opened `%s' (%ld bytes) successfully\n", | |||||
filepathname, stream->size )); | |||||
return FT_Err_Ok; | |||||
Fail_Read: | |||||
ft_free( NULL, stream->base ); | |||||
Fail_Map: | |||||
close( file ); | |||||
stream->base = NULL; | |||||
stream->size = 0; | |||||
stream->pos = 0; | |||||
return FT_THROW( Cannot_Open_Stream ); | |||||
} | |||||
#ifdef FT_DEBUG_MEMORY | |||||
extern FT_Int | |||||
ft_mem_debug_init( FT_Memory memory ); | |||||
extern void | |||||
ft_mem_debug_done( FT_Memory memory ); | |||||
#endif | |||||
/* documentation is in ftobjs.h */ | |||||
FT_BASE_DEF( FT_Memory ) | |||||
FT_New_Memory( void ) | |||||
{ | |||||
FT_Memory memory; | |||||
memory = (FT_Memory)malloc( sizeof ( *memory ) ); | |||||
if ( memory ) | |||||
{ | |||||
memory->user = 0; | |||||
memory->alloc = ft_alloc; | |||||
memory->realloc = ft_realloc; | |||||
memory->free = ft_free; | |||||
#ifdef FT_DEBUG_MEMORY | |||||
ft_mem_debug_init( memory ); | |||||
#endif | |||||
} | |||||
return memory; | |||||
} | |||||
/* documentation is in ftobjs.h */ | |||||
FT_BASE_DEF( void ) | |||||
FT_Done_Memory( FT_Memory memory ) | |||||
{ | |||||
#ifdef FT_DEBUG_MEMORY | |||||
ft_mem_debug_done( memory ); | |||||
#endif | |||||
memory->free( memory, memory ); | |||||
} | |||||
/* END */ |
@ -0,0 +1,501 @@ | |||||
#!/bin/sh | |||||
# install - install a program, script, or datafile | |||||
scriptversion=2013-12-25.23; # UTC | |||||
# This originates from X11R5 (mit/util/scripts/install.sh), which was | |||||
# later released in X11R6 (xc/config/util/install.sh) with the | |||||
# following copyright and license. | |||||
# | |||||
# Copyright (C) 1994 X Consortium | |||||
# | |||||
# Permission is hereby granted, free of charge, to any person obtaining a copy | |||||
# of this software and associated documentation files (the "Software"), to | |||||
# deal in the Software without restriction, including without limitation the | |||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or | |||||
# sell copies of the Software, and to permit persons to whom the Software is | |||||
# furnished to do so, subject to the following conditions: | |||||
# | |||||
# The above copyright notice and this permission notice shall be included in | |||||
# all copies or substantial portions of the Software. | |||||
# | |||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |||||
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN | |||||
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- | |||||
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | |||||
# | |||||
# Except as contained in this notice, the name of the X Consortium shall not | |||||
# be used in advertising or otherwise to promote the sale, use or other deal- | |||||
# ings in this Software without prior written authorization from the X Consor- | |||||
# tium. | |||||
# | |||||
# | |||||
# FSF changes to this file are in the public domain. | |||||
# | |||||
# Calling this script install-sh is preferred over install.sh, to prevent | |||||
# 'make' implicit rules from creating a file called install from it | |||||
# when there is no Makefile. | |||||
# | |||||
# This script is compatible with the BSD install script, but was written | |||||
# from scratch. | |||||
tab=' ' | |||||
nl=' | |||||
' | |||||
IFS=" $tab$nl" | |||||
# Set DOITPROG to "echo" to test this script. | |||||
doit=${DOITPROG-} | |||||
doit_exec=${doit:-exec} | |||||
# Put in absolute file names if you don't have them in your path; | |||||
# or use environment vars. | |||||
chgrpprog=${CHGRPPROG-chgrp} | |||||
chmodprog=${CHMODPROG-chmod} | |||||
chownprog=${CHOWNPROG-chown} | |||||
cmpprog=${CMPPROG-cmp} | |||||
cpprog=${CPPROG-cp} | |||||
mkdirprog=${MKDIRPROG-mkdir} | |||||
mvprog=${MVPROG-mv} | |||||
rmprog=${RMPROG-rm} | |||||
stripprog=${STRIPPROG-strip} | |||||
posix_mkdir= | |||||
# Desired mode of installed file. | |||||
mode=0755 | |||||
chgrpcmd= | |||||
chmodcmd=$chmodprog | |||||
chowncmd= | |||||
mvcmd=$mvprog | |||||
rmcmd="$rmprog -f" | |||||
stripcmd= | |||||
src= | |||||
dst= | |||||
dir_arg= | |||||
dst_arg= | |||||
copy_on_change=false | |||||
is_target_a_directory=possibly | |||||
usage="\ | |||||
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE | |||||
or: $0 [OPTION]... SRCFILES... DIRECTORY | |||||
or: $0 [OPTION]... -t DIRECTORY SRCFILES... | |||||
or: $0 [OPTION]... -d DIRECTORIES... | |||||
In the 1st form, copy SRCFILE to DSTFILE. | |||||
In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. | |||||
In the 4th, create DIRECTORIES. | |||||
Options: | |||||
--help display this help and exit. | |||||
--version display version info and exit. | |||||
-c (ignored) | |||||
-C install only if different (preserve the last data modification time) | |||||
-d create directories instead of installing files. | |||||
-g GROUP $chgrpprog installed files to GROUP. | |||||
-m MODE $chmodprog installed files to MODE. | |||||
-o USER $chownprog installed files to USER. | |||||
-s $stripprog installed files. | |||||
-t DIRECTORY install into DIRECTORY. | |||||
-T report an error if DSTFILE is a directory. | |||||
Environment variables override the default commands: | |||||
CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG | |||||
RMPROG STRIPPROG | |||||
" | |||||
while test $# -ne 0; do | |||||
case $1 in | |||||
-c) ;; | |||||
-C) copy_on_change=true;; | |||||
-d) dir_arg=true;; | |||||
-g) chgrpcmd="$chgrpprog $2" | |||||
shift;; | |||||
--help) echo "$usage"; exit $?;; | |||||
-m) mode=$2 | |||||
case $mode in | |||||
*' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) | |||||
echo "$0: invalid mode: $mode" >&2 | |||||
exit 1;; | |||||
esac | |||||
shift;; | |||||
-o) chowncmd="$chownprog $2" | |||||
shift;; | |||||
-s) stripcmd=$stripprog;; | |||||
-t) | |||||
is_target_a_directory=always | |||||
dst_arg=$2 | |||||
# Protect names problematic for 'test' and other utilities. | |||||
case $dst_arg in | |||||
-* | [=\(\)!]) dst_arg=./$dst_arg;; | |||||
esac | |||||
shift;; | |||||
-T) is_target_a_directory=never;; | |||||
--version) echo "$0 $scriptversion"; exit $?;; | |||||
--) shift | |||||
break;; | |||||
-*) echo "$0: invalid option: $1" >&2 | |||||
exit 1;; | |||||
*) break;; | |||||
esac | |||||
shift | |||||
done | |||||
# We allow the use of options -d and -T together, by making -d | |||||
# take the precedence; this is for compatibility with GNU install. | |||||
if test -n "$dir_arg"; then | |||||
if test -n "$dst_arg"; then | |||||
echo "$0: target directory not allowed when installing a directory." >&2 | |||||
exit 1 | |||||
fi | |||||
fi | |||||
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then | |||||
# When -d is used, all remaining arguments are directories to create. | |||||
# When -t is used, the destination is already specified. | |||||
# Otherwise, the last argument is the destination. Remove it from $@. | |||||
for arg | |||||
do | |||||
if test -n "$dst_arg"; then | |||||
# $@ is not empty: it contains at least $arg. | |||||
set fnord "$@" "$dst_arg" | |||||
shift # fnord | |||||
fi | |||||
shift # arg | |||||
dst_arg=$arg | |||||
# Protect names problematic for 'test' and other utilities. | |||||
case $dst_arg in | |||||
-* | [=\(\)!]) dst_arg=./$dst_arg;; | |||||
esac | |||||
done | |||||
fi | |||||
if test $# -eq 0; then | |||||
if test -z "$dir_arg"; then | |||||
echo "$0: no input file specified." >&2 | |||||
exit 1 | |||||
fi | |||||
# It's OK to call 'install-sh -d' without argument. | |||||
# This can happen when creating conditional directories. | |||||
exit 0 | |||||
fi | |||||
if test -z "$dir_arg"; then | |||||
if test $# -gt 1 || test "$is_target_a_directory" = always; then | |||||
if test ! -d "$dst_arg"; then | |||||
echo "$0: $dst_arg: Is not a directory." >&2 | |||||
exit 1 | |||||
fi | |||||
fi | |||||
fi | |||||
if test -z "$dir_arg"; then | |||||
do_exit='(exit $ret); exit $ret' | |||||
trap "ret=129; $do_exit" 1 | |||||
trap "ret=130; $do_exit" 2 | |||||
trap "ret=141; $do_exit" 13 | |||||
trap "ret=143; $do_exit" 15 | |||||
# Set umask so as not to create temps with too-generous modes. | |||||
# However, 'strip' requires both read and write access to temps. | |||||
case $mode in | |||||
# Optimize common cases. | |||||
*644) cp_umask=133;; | |||||
*755) cp_umask=22;; | |||||
*[0-7]) | |||||
if test -z "$stripcmd"; then | |||||
u_plus_rw= | |||||
else | |||||
u_plus_rw='% 200' | |||||
fi | |||||
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; | |||||
*) | |||||
if test -z "$stripcmd"; then | |||||
u_plus_rw= | |||||
else | |||||
u_plus_rw=,u+rw | |||||
fi | |||||
cp_umask=$mode$u_plus_rw;; | |||||
esac | |||||
fi | |||||
for src | |||||
do | |||||
# Protect names problematic for 'test' and other utilities. | |||||
case $src in | |||||
-* | [=\(\)!]) src=./$src;; | |||||
esac | |||||
if test -n "$dir_arg"; then | |||||
dst=$src | |||||
dstdir=$dst | |||||
test -d "$dstdir" | |||||
dstdir_status=$? | |||||
else | |||||
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command | |||||
# might cause directories to be created, which would be especially bad | |||||
# if $src (and thus $dsttmp) contains '*'. | |||||
if test ! -f "$src" && test ! -d "$src"; then | |||||
echo "$0: $src does not exist." >&2 | |||||
exit 1 | |||||
fi | |||||
if test -z "$dst_arg"; then | |||||
echo "$0: no destination specified." >&2 | |||||
exit 1 | |||||
fi | |||||
dst=$dst_arg | |||||
# If destination is a directory, append the input filename; won't work | |||||
# if double slashes aren't ignored. | |||||
if test -d "$dst"; then | |||||
if test "$is_target_a_directory" = never; then | |||||
echo "$0: $dst_arg: Is a directory" >&2 | |||||
exit 1 | |||||
fi | |||||
dstdir=$dst | |||||
dst=$dstdir/`basename "$src"` | |||||
dstdir_status=0 | |||||
else | |||||
dstdir=`dirname "$dst"` | |||||
test -d "$dstdir" | |||||
dstdir_status=$? | |||||
fi | |||||
fi | |||||
obsolete_mkdir_used=false | |||||
if test $dstdir_status != 0; then | |||||
case $posix_mkdir in | |||||
'') | |||||
# Create intermediate dirs using mode 755 as modified by the umask. | |||||
# This is like FreeBSD 'install' as of 1997-10-28. | |||||
umask=`umask` | |||||
case $stripcmd.$umask in | |||||
# Optimize common cases. | |||||
*[2367][2367]) mkdir_umask=$umask;; | |||||
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; | |||||
*[0-7]) | |||||
mkdir_umask=`expr $umask + 22 \ | |||||
- $umask % 100 % 40 + $umask % 20 \ | |||||
- $umask % 10 % 4 + $umask % 2 | |||||
`;; | |||||
*) mkdir_umask=$umask,go-w;; | |||||
esac | |||||
# With -d, create the new directory with the user-specified mode. | |||||
# Otherwise, rely on $mkdir_umask. | |||||
if test -n "$dir_arg"; then | |||||
mkdir_mode=-m$mode | |||||
else | |||||
mkdir_mode= | |||||
fi | |||||
posix_mkdir=false | |||||
case $umask in | |||||
*[123567][0-7][0-7]) | |||||
# POSIX mkdir -p sets u+wx bits regardless of umask, which | |||||
# is incompatible with FreeBSD 'install' when (umask & 300) != 0. | |||||
;; | |||||
*) | |||||
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ | |||||
trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 | |||||
if (umask $mkdir_umask && | |||||
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 | |||||
then | |||||
if test -z "$dir_arg" || { | |||||
# Check for POSIX incompatibilities with -m. | |||||
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or | |||||
# other-writable bit of parent directory when it shouldn't. | |||||
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory. | |||||
ls_ld_tmpdir=`ls -ld "$tmpdir"` | |||||
case $ls_ld_tmpdir in | |||||
d????-?r-*) different_mode=700;; | |||||
d????-?--*) different_mode=755;; | |||||
*) false;; | |||||
esac && | |||||
$mkdirprog -m$different_mode -p -- "$tmpdir" && { | |||||
ls_ld_tmpdir_1=`ls -ld "$tmpdir"` | |||||
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" | |||||
} | |||||
} | |||||
then posix_mkdir=: | |||||
fi | |||||
rmdir "$tmpdir/d" "$tmpdir" | |||||
else | |||||
# Remove any dirs left behind by ancient mkdir implementations. | |||||
rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null | |||||
fi | |||||
trap '' 0;; | |||||
esac;; | |||||
esac | |||||
if | |||||
$posix_mkdir && ( | |||||
umask $mkdir_umask && | |||||
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" | |||||
) | |||||
then : | |||||
else | |||||
# The umask is ridiculous, or mkdir does not conform to POSIX, | |||||
# or it failed possibly due to a race condition. Create the | |||||
# directory the slow way, step by step, checking for races as we go. | |||||
case $dstdir in | |||||
/*) prefix='/';; | |||||
[-=\(\)!]*) prefix='./';; | |||||
*) prefix='';; | |||||
esac | |||||
oIFS=$IFS | |||||
IFS=/ | |||||
set -f | |||||
set fnord $dstdir | |||||
shift | |||||
set +f | |||||
IFS=$oIFS | |||||
prefixes= | |||||
for d | |||||
do | |||||
test X"$d" = X && continue | |||||
prefix=$prefix$d | |||||
if test -d "$prefix"; then | |||||
prefixes= | |||||
else | |||||
if $posix_mkdir; then | |||||
(umask=$mkdir_umask && | |||||
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break | |||||
# Don't fail if two instances are running concurrently. | |||||
test -d "$prefix" || exit 1 | |||||
else | |||||
case $prefix in | |||||
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; | |||||
*) qprefix=$prefix;; | |||||
esac | |||||
prefixes="$prefixes '$qprefix'" | |||||
fi | |||||
fi | |||||
prefix=$prefix/ | |||||
done | |||||
if test -n "$prefixes"; then | |||||
# Don't fail if two instances are running concurrently. | |||||
(umask $mkdir_umask && | |||||
eval "\$doit_exec \$mkdirprog $prefixes") || | |||||
test -d "$dstdir" || exit 1 | |||||
obsolete_mkdir_used=true | |||||
fi | |||||
fi | |||||
fi | |||||
if test -n "$dir_arg"; then | |||||
{ test -z "$chowncmd" || $doit $chowncmd "$dst"; } && | |||||
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && | |||||
{ test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || | |||||
test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 | |||||
else | |||||
# Make a couple of temp file names in the proper directory. | |||||
dsttmp=$dstdir/_inst.$$_ | |||||
rmtmp=$dstdir/_rm.$$_ | |||||
# Trap to clean up those temp files at exit. | |||||
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 | |||||
# Copy the file name to the temp name. | |||||
(umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && | |||||
# and set any options; do chmod last to preserve setuid bits. | |||||
# | |||||
# If any of these fail, we abort the whole thing. If we want to | |||||
# ignore errors from any of these, just make sure not to ignore | |||||
# errors from the above "$doit $cpprog $src $dsttmp" command. | |||||
# | |||||
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && | |||||
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && | |||||
{ test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && | |||||
{ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && | |||||
# If -C, don't bother to copy if it wouldn't change the file. | |||||
if $copy_on_change && | |||||
old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && | |||||
new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && | |||||
set -f && | |||||
set X $old && old=:$2:$4:$5:$6 && | |||||
set X $new && new=:$2:$4:$5:$6 && | |||||
set +f && | |||||
test "$old" = "$new" && | |||||
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 | |||||
then | |||||
rm -f "$dsttmp" | |||||
else | |||||
# Rename the file to the real destination. | |||||
$doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || | |||||
# The rename failed, perhaps because mv can't rename something else | |||||
# to itself, or perhaps because mv is so ancient that it does not | |||||
# support -f. | |||||
{ | |||||
# Now remove or move aside any old file at destination location. | |||||
# We try this two ways since rm can't unlink itself on some | |||||
# systems and the destination file might be busy for other | |||||
# reasons. In this case, the final cleanup might fail but the new | |||||
# file should still install successfully. | |||||
{ | |||||
test ! -f "$dst" || | |||||
$doit $rmcmd -f "$dst" 2>/dev/null || | |||||
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && | |||||
{ $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } | |||||
} || | |||||
{ echo "$0: cannot unlink or rename $dst" >&2 | |||||
(exit 1); exit 1 | |||||
} | |||||
} && | |||||
# Now rename the file to the real destination. | |||||
$doit $mvcmd "$dsttmp" "$dst" | |||||
} | |||||
fi || exit 1 | |||||
trap '' 0 | |||||
fi | |||||
done | |||||
# Local variables: | |||||
# eval: (add-hook 'write-file-hooks 'time-stamp) | |||||
# time-stamp-start: "scriptversion=" | |||||
# time-stamp-format: "%:y-%02m-%02d.%02H" | |||||
# time-stamp-time-zone: "UTC" | |||||
# time-stamp-end: "; # UTC" | |||||
# End: |
@ -0,0 +1,102 @@ | |||||
# | |||||
# FreeType 2 installation instructions for Unix systems | |||||
# | |||||
# Copyright (C) 1996-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
# If you say | |||||
# | |||||
# make install DESTDIR=/tmp/somewhere/ | |||||
# | |||||
# don't forget the final backslash (this command is mainly for package | |||||
# maintainers). | |||||
.PHONY: install uninstall check | |||||
# Unix installation and deinstallation targets. | |||||
# | |||||
# Note that we remove any data found in `$(includedir)/freetype2' before | |||||
# installing new files to avoid interferences with files installed by | |||||
# previous FreeType versions (which use slightly different locations). | |||||
# | |||||
# We also remove `$(includedir)/ft2build.h' for the same reason. | |||||
# | |||||
# Note that some header files get handled twice for simplicity; a special, | |||||
# configured version overwrites the generic one. | |||||
# | |||||
install: $(PROJECT_LIBRARY) | |||||
-$(DELDIR) $(DESTDIR)$(includedir)/freetype2 | |||||
-$(DELETE) $(DESTDIR)$(includedir)/ft2build.h | |||||
$(MKINSTALLDIRS) $(DESTDIR)$(libdir) \ | |||||
$(DESTDIR)$(libdir)/pkgconfig \ | |||||
$(DESTDIR)$(includedir)/freetype2/freetype/config \ | |||||
$(DESTDIR)$(datadir)/aclocal | |||||
ifeq ($(INSTALL_FT2_CONFIG),TRUE) | |||||
$(MKINSTALLDIRS) $(DESTDIR)$(bindir) \ | |||||
$(DESTDIR)$(mandir)/man1 | |||||
endif | |||||
$(LIBTOOL) --mode=install $(INSTALL) \ | |||||
$(PROJECT_LIBRARY) $(DESTDIR)$(libdir) | |||||
-for P in $(PUBLIC_H) ; do \ | |||||
$(INSTALL_DATA) \ | |||||
$$P $(DESTDIR)$(includedir)/freetype2/freetype ; \ | |||||
done | |||||
-for P in $(CONFIG_H) ; do \ | |||||
$(INSTALL_DATA) \ | |||||
$$P $(DESTDIR)$(includedir)/freetype2/freetype/config ; \ | |||||
done | |||||
$(INSTALL_DATA) $(TOP_DIR)/include/ft2build.h \ | |||||
$(DESTDIR)$(includedir)/freetype2/ft2build.h | |||||
$(INSTALL_DATA) $(OBJ_BUILD)/ftconfig.h \ | |||||
$(DESTDIR)$(includedir)/freetype2/freetype/config/ftconfig.h | |||||
$(INSTALL_DATA) $(OBJ_DIR)/ftmodule.h \ | |||||
$(DESTDIR)$(includedir)/freetype2/freetype/config/ftmodule.h | |||||
$(INSTALL_DATA) $(OBJ_BUILD)/ftoption.h \ | |||||
$(DESTDIR)$(includedir)/freetype2/freetype/config/ftoption.h | |||||
$(INSTALL_SCRIPT) -m 644 $(PLATFORM_DIR)/freetype2.m4 \ | |||||
$(DESTDIR)$(datadir)/aclocal/freetype2.m4 | |||||
$(INSTALL_SCRIPT) -m 644 $(OBJ_BUILD)/freetype2.pc \ | |||||
$(DESTDIR)$(libdir)/pkgconfig/freetype2.pc | |||||
ifeq ($(INSTALL_FT2_CONFIG),TRUE) | |||||
$(INSTALL_SCRIPT) -m 755 $(OBJ_BUILD)/freetype-config \ | |||||
$(DESTDIR)$(bindir)/freetype-config | |||||
$(INSTALL_DATA) $(TOP_DIR)/docs/freetype-config.1 \ | |||||
$(DESTDIR)$(mandir)/man1/freetype-config.1 | |||||
endif | |||||
uninstall: | |||||
-$(LIBTOOL) --mode=uninstall $(RM) $(DESTDIR)$(libdir)/$(LIBRARY).$A | |||||
-$(DELDIR) $(DESTDIR)$(includedir)/freetype2 | |||||
-$(DELETE) $(DESTDIR)$(bindir)/freetype-config | |||||
-$(DELETE) $(DESTDIR)$(datadir)/aclocal/freetype2.m4 | |||||
-$(DELETE) $(DESTDIR)$(libdir)/pkgconfig/freetype2.pc | |||||
-$(DELETE) $(DESTDIR)$(mandir)/man1/freetype-config.1 | |||||
check: | |||||
$(info There is no validation suite for this package.) | |||||
.PHONY: clean_project_unix distclean_project_unix | |||||
# Unix cleaning and distclean rules. | |||||
# | |||||
clean_project_unix: | |||||
-$(LIBTOOL) --mode=clean $(RM) $(OBJECTS_LIST) | |||||
-$(DELETE) $(CLEAN) | |||||
distclean_project_unix: clean_project_unix | |||||
-$(LIBTOOL) --mode=clean $(RM) $(PROJECT_LIBRARY) | |||||
-$(DELETE) *.orig *~ core *.core $(DISTCLEAN) | |||||
# EOF |
@ -0,0 +1,199 @@ | |||||
# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- | |||||
# serial 1 (pkg-config-0.24) | |||||
# | |||||
# Copyright © 2004 Scott James Remnant <scott@netsplit.com>. | |||||
# | |||||
# This program is free software; you can redistribute it and/or modify | |||||
# it under the terms of the GNU General Public License as published by | |||||
# the Free Software Foundation; either version 2 of the License, or | |||||
# (at your option) any later version. | |||||
# | |||||
# This program is distributed in the hope that it will be useful, but | |||||
# WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||||
# General Public License for more details. | |||||
# | |||||
# You should have received a copy of the GNU General Public License | |||||
# along with this program; if not, write to the Free Software | |||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||||
# | |||||
# As a special exception to the GNU General Public License, if you | |||||
# distribute this file as part of a program that contains a | |||||
# configuration script generated by Autoconf, you may include it under | |||||
# the same distribution terms that you use for the rest of that program. | |||||
# PKG_PROG_PKG_CONFIG([MIN-VERSION]) | |||||
# ---------------------------------- | |||||
AC_DEFUN([PKG_PROG_PKG_CONFIG], | |||||
[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) | |||||
m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) | |||||
m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) | |||||
AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) | |||||
AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) | |||||
AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) | |||||
if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then | |||||
AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) | |||||
fi | |||||
if test -n "$PKG_CONFIG"; then | |||||
_pkg_min_version=m4_default([$1], [0.9.0]) | |||||
AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) | |||||
if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then | |||||
AC_MSG_RESULT([yes]) | |||||
else | |||||
AC_MSG_RESULT([no]) | |||||
PKG_CONFIG="" | |||||
fi | |||||
fi[]dnl | |||||
])# PKG_PROG_PKG_CONFIG | |||||
# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) | |||||
# | |||||
# Check to see whether a particular set of modules exists. Similar | |||||
# to PKG_CHECK_MODULES(), but does not set variables or print errors. | |||||
# | |||||
# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) | |||||
# only at the first occurrence in configure.ac, so if the first place | |||||
# it's called might be skipped (such as if it is within an "if", you | |||||
# have to call PKG_CHECK_EXISTS manually | |||||
# -------------------------------------------------------------- | |||||
AC_DEFUN([PKG_CHECK_EXISTS], | |||||
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl | |||||
if test -n "$PKG_CONFIG" && \ | |||||
AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then | |||||
m4_default([$2], [:]) | |||||
m4_ifvaln([$3], [else | |||||
$3])dnl | |||||
fi]) | |||||
# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) | |||||
# --------------------------------------------- | |||||
m4_define([_PKG_CONFIG], | |||||
[if test -n "$$1"; then | |||||
pkg_cv_[]$1="$$1" | |||||
elif test -n "$PKG_CONFIG"; then | |||||
PKG_CHECK_EXISTS([$3], | |||||
[pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` | |||||
test "x$?" != "x0" && pkg_failed=yes ], | |||||
[pkg_failed=yes]) | |||||
else | |||||
pkg_failed=untried | |||||
fi[]dnl | |||||
])# _PKG_CONFIG | |||||
# _PKG_SHORT_ERRORS_SUPPORTED | |||||
# ----------------------------- | |||||
AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], | |||||
[AC_REQUIRE([PKG_PROG_PKG_CONFIG]) | |||||
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then | |||||
_pkg_short_errors_supported=yes | |||||
else | |||||
_pkg_short_errors_supported=no | |||||
fi[]dnl | |||||
])# _PKG_SHORT_ERRORS_SUPPORTED | |||||
# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], | |||||
# [ACTION-IF-NOT-FOUND]) | |||||
# | |||||
# | |||||
# Note that if there is a possibility the first call to | |||||
# PKG_CHECK_MODULES might not happen, you should be sure to include an | |||||
# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac | |||||
# | |||||
# | |||||
# -------------------------------------------------------------- | |||||
AC_DEFUN([PKG_CHECK_MODULES], | |||||
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl | |||||
AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl | |||||
AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl | |||||
pkg_failed=no | |||||
AC_MSG_CHECKING([for $1]) | |||||
_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) | |||||
_PKG_CONFIG([$1][_LIBS], [libs], [$2]) | |||||
m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS | |||||
and $1[]_LIBS to avoid the need to call pkg-config. | |||||
See the pkg-config man page for more details.]) | |||||
if test $pkg_failed = yes; then | |||||
AC_MSG_RESULT([no]) | |||||
_PKG_SHORT_ERRORS_SUPPORTED | |||||
if test $_pkg_short_errors_supported = yes; then | |||||
$1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` | |||||
else | |||||
$1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` | |||||
fi | |||||
# Put the nasty error message in config.log where it belongs | |||||
echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD | |||||
m4_default([$4], [AC_MSG_ERROR( | |||||
[Package requirements ($2) were not met: | |||||
$$1_PKG_ERRORS | |||||
Consider adjusting the PKG_CONFIG_PATH environment variable if you | |||||
installed software in a non-standard prefix. | |||||
_PKG_TEXT])[]dnl | |||||
]) | |||||
elif test $pkg_failed = untried; then | |||||
AC_MSG_RESULT([no]) | |||||
m4_default([$4], [AC_MSG_FAILURE( | |||||
[The pkg-config script could not be found or is too old. Make sure it | |||||
is in your PATH or set the PKG_CONFIG environment variable to the full | |||||
path to pkg-config. | |||||
_PKG_TEXT | |||||
To get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl | |||||
]) | |||||
else | |||||
$1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS | |||||
$1[]_LIBS=$pkg_cv_[]$1[]_LIBS | |||||
AC_MSG_RESULT([yes]) | |||||
$3 | |||||
fi[]dnl | |||||
])# PKG_CHECK_MODULES | |||||
# PKG_INSTALLDIR(DIRECTORY) | |||||
# ------------------------- | |||||
# Substitutes the variable pkgconfigdir as the location where a module | |||||
# should install pkg-config .pc files. By default the directory is | |||||
# $libdir/pkgconfig, but the default can be changed by passing | |||||
# DIRECTORY. The user can override through the --with-pkgconfigdir | |||||
# parameter. | |||||
AC_DEFUN([PKG_INSTALLDIR], | |||||
[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) | |||||
m4_pushdef([pkg_description], | |||||
[pkg-config installation directory @<:@]pkg_default[@:>@]) | |||||
AC_ARG_WITH([pkgconfigdir], | |||||
[AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, | |||||
[with_pkgconfigdir=]pkg_default) | |||||
AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) | |||||
m4_popdef([pkg_default]) | |||||
m4_popdef([pkg_description]) | |||||
]) dnl PKG_INSTALLDIR | |||||
# PKG_NOARCH_INSTALLDIR(DIRECTORY) | |||||
# ------------------------- | |||||
# Substitutes the variable noarch_pkgconfigdir as the location where a | |||||
# module should install arch-independent pkg-config .pc files. By | |||||
# default the directory is $datadir/pkgconfig, but the default can be | |||||
# changed by passing DIRECTORY. The user can override through the | |||||
# --with-noarch-pkgconfigdir parameter. | |||||
AC_DEFUN([PKG_NOARCH_INSTALLDIR], | |||||
[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) | |||||
m4_pushdef([pkg_description], | |||||
[pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) | |||||
AC_ARG_WITH([noarch-pkgconfigdir], | |||||
[AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, | |||||
[with_noarch_pkgconfigdir=]pkg_default) | |||||
AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) | |||||
m4_popdef([pkg_default]) | |||||
m4_popdef([pkg_description]) | |||||
]) dnl PKG_NOARCH_INSTALLDIR |
@ -0,0 +1,128 @@ | |||||
# | |||||
# FreeType 2 template for Unix-specific compiler definitions | |||||
# | |||||
# Copyright (C) 1996-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
CC := @CC@ | |||||
COMPILER_SEP := $(SEP) | |||||
FT_LIBTOOL_DIR ?= $(PLATFORM_DIR) | |||||
LIBTOOL := $(FT_LIBTOOL_DIR)/libtool | |||||
# The object file extension (for standard and static libraries). This can be | |||||
# .o, .tco, .obj, etc., depending on the platform. | |||||
# | |||||
O := lo | |||||
SO := o | |||||
# The executable file extension. Although most Unix platforms use no | |||||
# extension, we copy the extension detected by autoconf. Useful for cross | |||||
# building on Unix systems for non-Unix systems. | |||||
# | |||||
E := @EXEEXT@ | |||||
# The library file extension (for standard and static libraries). This can | |||||
# be .a, .lib, etc., depending on the platform. | |||||
# | |||||
A := la | |||||
SA := a | |||||
# The name of the final library file. Note that the DOS-specific Makefile | |||||
# uses a shorter (8.3) name. | |||||
# | |||||
LIBRARY := lib$(PROJECT) | |||||
# Path inclusion flag. Some compilers use a different flag than `-I' to | |||||
# specify an additional include path. Examples are `/i=' or `-J'. | |||||
# | |||||
I := -I | |||||
# C flag used to define a macro before the compilation of a given source | |||||
# object. Usually it is `-D' like in `-DDEBUG'. | |||||
# | |||||
D := -D | |||||
# The link flag used to specify a given library file on link. Note that | |||||
# this is only used to compile the demo programs, not the library itself. | |||||
# | |||||
L := -l | |||||
# Target flag. | |||||
# | |||||
T := -o$(space) | |||||
# C flags | |||||
# | |||||
# These should concern: debug output, optimization & warnings. | |||||
# | |||||
# Use the ANSIFLAGS variable to define the compiler flags used to enforce | |||||
# ANSI compliance. | |||||
# | |||||
# We use our own FreeType configuration files overriding defaults. | |||||
# | |||||
CPPFLAGS := @CPPFLAGS@ | |||||
CFLAGS := -c @XX_CFLAGS@ @CFLAGS@ \ | |||||
$DFT_CONFIG_CONFIG_H="<ftconfig.h>" \ | |||||
$DFT_CONFIG_MODULES_H="<ftmodule.h>" \ | |||||
$DFT_CONFIG_OPTIONS_H="<ftoption.h>" | |||||
# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. | |||||
# | |||||
ANSIFLAGS := @XX_ANSIFLAGS@ | |||||
# C compiler to use -- we use libtool! | |||||
# | |||||
# CC might be set on the command line; we store this value in `CCraw'. | |||||
# Consequently, we use the `override' directive to ensure that the | |||||
# libtool call is always prepended. | |||||
# | |||||
CCraw := $(CC) | |||||
override CC := $(LIBTOOL) --mode=compile $(CCraw) | |||||
# Resource compiler to use on Cygwin/MinGW, usually windres. | |||||
# | |||||
RCraw := @RC@ | |||||
ifneq ($(RCraw),) | |||||
RC := $(LIBTOOL) --tag=RC --mode=compile $(RCraw) | |||||
endif | |||||
# Linker flags. | |||||
# | |||||
LDFLAGS := @LDFLAGS@ | |||||
LIB_CLOCK_GETTIME := @LIB_CLOCK_GETTIME@ # for ftbench | |||||
# export symbols | |||||
# | |||||
CCraw_build := @CC_BUILD@ # native CC of building system | |||||
E_BUILD := @EXEEXT_BUILD@ # extension for executable on building system | |||||
EXPORTS_LIST := $(OBJ_DIR)/ftexport.sym | |||||
CCexe := $(CCraw_build) # used to compile `apinames' only | |||||
# Library linking | |||||
# | |||||
LINK_LIBRARY = $(LIBTOOL) --mode=link $(CCraw) -o $@ $(OBJECTS_LIST) \ | |||||
-rpath $(libdir) -version-info $(version_info) \ | |||||
$(LDFLAGS) -no-undefined \ | |||||
-export-symbols $(EXPORTS_LIST) | |||||
# EOF |
@ -0,0 +1,159 @@ | |||||
# | |||||
# FreeType 2 configuration rules templates for Unix + configure | |||||
# | |||||
# Copyright (C) 1996-2021 by | |||||
# David Turner, Robert Wilhelm, and Werner Lemberg. | |||||
# | |||||
# This file is part of the FreeType project, and may only be used, modified, | |||||
# and distributed under the terms of the FreeType project license, | |||||
# LICENSE.TXT. By continuing to use, modify, or distribute this file you | |||||
# indicate that you have read the license and understand and accept it | |||||
# fully. | |||||
SHELL := @SHELL@ | |||||
TOP_DIR := $(shell cd $(TOP_DIR); pwd) | |||||
DELETE := rm -f | |||||
DELDIR := rm -rf | |||||
CAT := cat | |||||
SEP := / | |||||
# This is used for `make refdoc' and `make refdoc-venv' | |||||
# | |||||
PYTHON := @PYTHON@ | |||||
BIN := bin | |||||
# this is used for `make distclean' and `make install' | |||||
OBJ_BUILD ?= $(PLATFORM_DIR) | |||||
# don't use `:=' here since the path stuff will be included after this file | |||||
# | |||||
FTSYS_SRC = @FTSYS_SRC@ | |||||
INSTALL := @INSTALL@ | |||||
INSTALL_DATA := @INSTALL_DATA@ | |||||
INSTALL_PROGRAM := @INSTALL_PROGRAM@ | |||||
INSTALL_SCRIPT := @INSTALL_SCRIPT@ | |||||
MKINSTALLDIRS := @MKDIR_P@ | |||||
CLEAN += $(OBJ_BUILD)/freetype-config \ | |||||
$(OBJ_BUILD)/freetype2.pc | |||||
DISTCLEAN += $(OBJ_BUILD)/config.cache \ | |||||
$(OBJ_BUILD)/config.log \ | |||||
$(OBJ_BUILD)/config.status \ | |||||
$(OBJ_BUILD)/unix-def.mk \ | |||||
$(OBJ_BUILD)/unix-cc.mk \ | |||||
$(OBJ_BUILD)/ftconfig.h \ | |||||
$(OBJ_BUILD)/ftoption.h \ | |||||
$(LIBTOOL) \ | |||||
$(OBJ_BUILD)/Makefile | |||||
# Standard installation variables. | |||||
# | |||||
prefix := @prefix@ | |||||
exec_prefix := @exec_prefix@ | |||||
libdir := @libdir@ | |||||
bindir := @bindir@ | |||||
includedir := @includedir@ | |||||
datarootdir := @datarootdir@ | |||||
datadir := @datadir@ | |||||
mandir := @mandir@ | |||||
version_info := @version_info@ | |||||
# Variables needed for `freetype-config' and `freetype.pc'. | |||||
# | |||||
PKG_CONFIG := @PKG_CONFIG@ | |||||
REQUIRES_PRIVATE := @REQUIRES_PRIVATE@ | |||||
LIBS_PRIVATE := @LIBS_PRIVATE@ | |||||
LIBSSTATIC_CONFIG := @LIBSSTATIC_CONFIG@ | |||||
build_libtool_libs := @build_libtool_libs@ | |||||
ft_version := @ft_version@ | |||||
# The directory where all library files are placed. | |||||
# | |||||
# By default, this is the same as $(OBJ_DIR); however, this can be changed | |||||
# to suit particular needs. | |||||
# | |||||
LIB_DIR := $(OBJ_DIR) | |||||
# The BASE_SRC macro lists all source files that should be included in | |||||
# src/base/ftbase.c. When configure sets up CFLAGS to build ftmac.c, | |||||
# ftmac.c should be added to BASE_SRC. | |||||
ftmac_c := @ftmac_c@ | |||||
# The SYSTEM_ZLIB macro is defined if the user wishes to link dynamically | |||||
# with its system wide zlib. If SYSTEM_ZLIB is 'yes', the zlib part of the | |||||
# ftgzip module is not compiled in. | |||||
SYSTEM_ZLIB := @SYSTEM_ZLIB@ | |||||
# The NO_OUTPUT macro is appended to command lines in order to ignore | |||||
# the output of some programs. | |||||
# | |||||
NO_OUTPUT := 2> /dev/null | |||||
# To support calls like | |||||
# | |||||
# configure --includedir='${libdir}'/freetype2/include | |||||
# | |||||
# we generate `freetype-config' and `freetype.pc' at compile time so that | |||||
# those variables are properly expanded. | |||||
$(OBJ_BUILD)/freetype-config: $(TOP_DIR)/builds/unix/freetype-config.in | |||||
rm -f $@ $@.tmp | |||||
sed -e 's|%LIBSSTATIC_CONFIG%|$(LIBSSTATIC_CONFIG)|' \ | |||||
-e 's|%PKG_CONFIG%|$(PKG_CONFIG)|' \ | |||||
-e 's|%build_libtool_libs%|$(build_libtool_libs)|' \ | |||||
-e 's|%exec_prefix%|$(exec_prefix)|' \ | |||||
-e 's|%ft_version%|$(ft_version)|' \ | |||||
-e 's|%includedir%|$(includedir)|' \ | |||||
-e 's|%libdir%|$(libdir)|' \ | |||||
-e 's|%prefix%|$(prefix)|' \ | |||||
$< \ | |||||
> $@.tmp | |||||
chmod +x $@.tmp | |||||
chmod go-w $@.tmp | |||||
mv $@.tmp $@ | |||||
# To support directory names with spaces (as might easily happen on Windows | |||||
# platforms), the right solution would be to surround the pkg-variables in | |||||
# `freetype2.pc' with double quotes. However, doing so ironically disables | |||||
# the prefix override mechanism especially written for Windows. This is a | |||||
# bug in pkg-config version 0.28 and earlier. | |||||
# | |||||
# For this reason, we escape spaces with backslashes. | |||||
exec_prefix_x := $(subst $(space),\\$(space),$(exec_prefix)) | |||||
includedir_x := $(subst $(space),\\$(space),$(includedir)) | |||||
libdir_x := $(subst $(space),\\$(space),$(libdir)) | |||||
prefix_x := $(subst $(space),\\$(space),$(prefix)) | |||||
$(OBJ_BUILD)/freetype2.pc: $(TOP_DIR)/builds/unix/freetype2.in | |||||
rm -f $@ $@.tmp | |||||
sed -e 's|%REQUIRES_PRIVATE%|$(REQUIRES_PRIVATE)|' \ | |||||
-e 's|%LIBS_PRIVATE%|$(LIBS_PRIVATE)|' \ | |||||
-e 's|%build_libtool_libs%|$(build_libtool_libs)|' \ | |||||
-e 's|%exec_prefix%|$(exec_prefix_x)|' \ | |||||
-e 's|%ft_version%|$(ft_version)|' \ | |||||
-e 's|%includedir%|$(includedir_x)|' \ | |||||
-e 's|%libdir%|$(libdir_x)|' \ | |||||
-e 's|%prefix%|$(prefix_x)|' \ | |||||
$< \ | |||||
> $@.tmp | |||||
chmod a-w $@.tmp | |||||
mv $@.tmp $@ | |||||
# defines whether we should install `freetype-config' or not | |||||
INSTALL_FT2_CONFIG = @INSTALL_FT2_CONFIG@ | |||||
all install: $(OBJ_BUILD)/freetype-config \ | |||||
$(OBJ_BUILD)/freetype2.pc | |||||
# EOF |