mirror of
https://github.com/apache/httpd.git
synced 2025-04-18 22:24:07 +03:00
Remove awk dependency when building using CMake. Before this awk was required
for -DWITH_MODULES option. * build/build-modules-c.cmake: (generate_builtin_modules_c): Function to generate modules.c. * CMakeLists.txt (): Use generate_builtin_modules_c() instead of `awk -f build/build-modules-c.awk` to generate modules.c file. * README.cmake: (Prerequisites, How to build): Do not mention awk as prerequisite. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1919413 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
152035066b
commit
55c5d07a2d
@ -23,6 +23,7 @@ PROJECT(HTTPD C)
|
||||
|
||||
INCLUDE(CheckSymbolExists)
|
||||
INCLUDE(CheckCSourceCompiles)
|
||||
INCLUDE("build/build-modules-c.cmake")
|
||||
|
||||
FIND_PACKAGE(LibXml2)
|
||||
FIND_PACKAGE(Lua51)
|
||||
@ -656,26 +657,20 @@ SET(install_targets)
|
||||
SET(install_bin_pdb)
|
||||
SET(install_modules) # special handling vs. other installed targets
|
||||
SET(install_modules_pdb)
|
||||
SET(builtin_module_shortnames "win32 mpm_winnt http so") # core added automatically
|
||||
SET(builtin_module_shortnames)
|
||||
LIST(APPEND builtin_module_shortnames "win32" "mpm_winnt" "http" "so") # core added automatically
|
||||
SET(extra_builtin_modules) # the ones specified with -DWITH_MODULES=
|
||||
|
||||
IF(WITH_MODULES) # modules statically linked with the server
|
||||
STRING(REPLACE "," ";" WITH_MODULE_LIST ${WITH_MODULES})
|
||||
FOREACH(static_mod ${WITH_MODULE_LIST})
|
||||
STRING(REGEX MATCH "[^/]+\\.c" mod_basename ${static_mod})
|
||||
STRING(REGEX REPLACE "^mod_(.*)\\.c" "\\1" mod_module_name ${mod_basename})
|
||||
SET(builtin_module_shortnames "${builtin_module_shortnames} ${mod_module_name}")
|
||||
CONFIGURE_FILE(${static_mod} ${PROJECT_BINARY_DIR}/ COPYONLY)
|
||||
SET(extra_builtin_modules ${extra_builtin_modules} ${PROJECT_BINARY_DIR}/${mod_basename})
|
||||
ENDFOREACH()
|
||||
EXECUTE_PROCESS(COMMAND cmd /c "echo ${builtin_module_shortnames}| awk -f ${CMAKE_CURRENT_SOURCE_DIR}/build/build-modules-c.awk > ${PROJECT_BINARY_DIR}/modules.c" RESULT_VARIABLE rv)
|
||||
IF(rv)
|
||||
MESSAGE(FATAL_ERROR "build-modules-c.awk failed (${rv})")
|
||||
ENDIF()
|
||||
ELSE()
|
||||
# no extra built-in modules; use the default modules.c to avoid the awk prereq
|
||||
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/os/win32/modules.c ${PROJECT_BINARY_DIR}/ COPYONLY)
|
||||
ENDIF()
|
||||
STRING(REPLACE "," ";" WITH_MODULE_LIST "${WITH_MODULES}")
|
||||
FOREACH(static_mod ${WITH_MODULE_LIST})
|
||||
STRING(REGEX MATCH "[^/]+\\.c" mod_basename ${static_mod})
|
||||
STRING(REGEX REPLACE "^mod_(.*)\\.c" "\\1" mod_module_name ${mod_basename})
|
||||
LIST(APPEND builtin_module_shortnames "${mod_module_name}")
|
||||
CONFIGURE_FILE(${static_mod} ${PROJECT_BINARY_DIR}/ COPYONLY)
|
||||
SET(extra_builtin_modules ${extra_builtin_modules} ${PROJECT_BINARY_DIR}/${mod_basename})
|
||||
ENDFOREACH()
|
||||
|
||||
generate_builtin_modules_c("${PROJECT_BINARY_DIR}/modules.c" "${builtin_module_shortnames}")
|
||||
|
||||
# for easy reference from .dll/.so builds
|
||||
CONFIGURE_FILE(os/win32/BaseAddr.ref ${PROJECT_BINARY_DIR}/ COPYONLY)
|
||||
|
@ -34,7 +34,6 @@ The following tools must be in PATH:
|
||||
cmake version 3.1.3 or later is required to work with current OpenSSL
|
||||
releases. (OpenSSL is an optional prerequisite of httpd.)
|
||||
* Perl
|
||||
* If the WITH_MODULES feature is used: awk
|
||||
* If using a command-line compiler: compiler and linker and related tools
|
||||
(Refer to the cmake documentation for more information.)
|
||||
|
||||
@ -100,8 +99,6 @@ How to build
|
||||
|
||||
2. Make sure cmake and Perl are in PATH. Additionally, some backends
|
||||
require compile tools in PATH. (Hint: "Visual Studio Command Prompt")
|
||||
In the unlikely event that you use -DWITH_MODULES, described below, make
|
||||
sure awk is in PATH.
|
||||
|
||||
3. cmake -G "some backend, like 'NMake Makefiles'"
|
||||
-DCMAKE_INSTALL_PREFIX=d:/path/to/httpdinst
|
||||
|
83
build/build-modules-c.cmake
Normal file
83
build/build-modules-c.cmake
Normal file
@ -0,0 +1,83 @@
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
function(generate_builtin_modules_c output_filename module_list)
|
||||
list(PREPEND module_list "core")
|
||||
|
||||
set(content "")
|
||||
|
||||
string(APPEND content "/*\n")
|
||||
string(APPEND content " * modules.c --- automatically generated by Apache\n")
|
||||
string(APPEND content " * configuration script. DO NOT HAND EDIT!!!!!\n")
|
||||
string(APPEND content " */\n")
|
||||
string(APPEND content "\n")
|
||||
string(APPEND content "#include \"ap_config.h\"\n")
|
||||
string(APPEND content "#include \"httpd.h\"\n")
|
||||
string(APPEND content "#include \"http_config.h\"\n")
|
||||
string(APPEND content "\n")
|
||||
|
||||
foreach(module ${module_list})
|
||||
string(APPEND content "extern module ${module}_module\;\n")
|
||||
endforeach()
|
||||
|
||||
string(APPEND content "\n")
|
||||
string(APPEND content "/*\n")
|
||||
string(APPEND content " * Modules which implicitly form the\n")
|
||||
string(APPEND content " * list of activated modules on startup,\n")
|
||||
string(APPEND content " * i.e. these are the modules which are\n")
|
||||
string(APPEND content " * initially linked into the Apache processing\n")
|
||||
string(APPEND content " * [extendable under run-time via AddModule]\n")
|
||||
string(APPEND content " */\n")
|
||||
|
||||
string(APPEND content "AP_DECLARE_DATA module *ap_prelinked_modules[] = {\n")
|
||||
foreach(module ${module_list})
|
||||
string(APPEND content " &${module}_module,\n")
|
||||
endforeach()
|
||||
string(APPEND content " NULL\n")
|
||||
string(APPEND content "}\;\n")
|
||||
|
||||
string(APPEND content "\n")
|
||||
string(APPEND content "/*\n")
|
||||
string(APPEND content " * We need the symbols as strings for <IfModule> containers\n")
|
||||
string(APPEND content " */\n")
|
||||
string(APPEND content "\n")
|
||||
string(APPEND content "ap_module_symbol_t ap_prelinked_module_symbols[] = {\n")
|
||||
|
||||
foreach(module ${module_list})
|
||||
string(APPEND content " {\"${module}_module\", &${module}_module},\n")
|
||||
endforeach()
|
||||
|
||||
string(APPEND content " {NULL, NULL}\n")
|
||||
string(APPEND content "}\;\n")
|
||||
string(APPEND content "\n")
|
||||
string(APPEND content "/*\n")
|
||||
string(APPEND content " * Modules which initially form the\n")
|
||||
string(APPEND content " * list of available modules on startup,\n")
|
||||
string(APPEND content " * i.e. these are the modules which are\n")
|
||||
string(APPEND content " * initially loaded into the Apache process\n")
|
||||
string(APPEND content " * [extendable under run-time via LoadModule]\n")
|
||||
string(APPEND content " */\n")
|
||||
string(APPEND content "module *ap_preloaded_modules[] = {\n")
|
||||
|
||||
foreach(module ${module_list})
|
||||
string(APPEND content " &${module}_module,\n")
|
||||
endforeach()
|
||||
|
||||
string(APPEND content " NULL\n")
|
||||
string(APPEND content "}\;\n")
|
||||
string(APPEND content "\n")
|
||||
|
||||
file(WRITE ${output_filename} ${content})
|
||||
endfunction()
|
Loading…
x
Reference in New Issue
Block a user