Compare commits
15 Commits
6c6702f160
...
d5fdc8b183
Author | SHA1 | Date |
---|---|---|
songyunzheng | d5fdc8b183 | 2 years ago |
smj | c33e37a4c5 | 2 years ago |
smj | 6d9be42f77 | 2 years ago |
smj | 7aa57db260 | 2 years ago |
smj | d49037109e | 2 years ago |
smj | 81a8f0f893 | 2 years ago |
smj | f986ac9a9a | 2 years ago |
smj | 6a6dfcbeaf | 2 years ago |
smj | 40ee5fd1f7 | 2 years ago |
smj | 4fc0f7fc03 | 2 years ago |
ptinqsey9 | 71fcbf9c60 | 2 years ago |
ptinqsey9 | 9f45896188 | 2 years ago |
lxy | 87d0f975e7 | 2 years ago |
pbffxt9nr | 90f3213951 | 2 years ago |
pbffxt9nr | 54330c756d | 2 years ago |
After Width: | Height: | Size: 150 KiB |
After Width: | Height: | Size: 74 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 36 KiB |
After Width: | Height: | Size: 50 KiB |
Before Width: | Height: | Size: 113 KiB |
After Width: | Height: | Size: 88 KiB |
After Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 91 KiB |
After Width: | Height: | Size: 9.8 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 45 KiB |
@ -0,0 +1,263 @@
|
|||||||
|
import * as THREE from 'three';
|
||||||
|
import {OrbitControls} from 'three/addons/controls/OrbitControls.js';
|
||||||
|
//定义全局变量
|
||||||
|
var geometry = new THREE.BoxGeometry( 1, 1, 1 );
|
||||||
|
var material = new THREE.MeshBasicMaterial( {color: 0x00ff00} );
|
||||||
|
var material1 = new THREE.MeshBasicMaterial({color:0x800080})
|
||||||
|
var progress = 0;
|
||||||
|
var velocity = 0.001;
|
||||||
|
var a = [new THREE.Vector3(10,10,0),
|
||||||
|
new THREE.Vector3(10,0,2),
|
||||||
|
new THREE.Vector3(0,15,20)];
|
||||||
|
var curve;
|
||||||
|
var scene ;
|
||||||
|
var camera ;
|
||||||
|
var renderer;
|
||||||
|
var controls ;
|
||||||
|
var hands=[Lhand,Rhand];
|
||||||
|
var Lhand = [Lcube,Lcube1,Lcube2,Lcube3,Lcube4,Lcube5,Lcube6,Lcube7,Lcube8,Lcube9,Lcube10,Lcube11,Lcube12,Lcube13,Lcube14,Lcube15,Lcube16,Lcube17,Lcube18,Lcube19,Lcube20];
|
||||||
|
var Rhand = [Rcube,Rcube1,Rcube2,Rcube3,Rcube4,Rcube5,Rcube6,Rcube7,Rcube8,Rcube9,Rcube10,Rcube11,Rcube12,Rcube13,Rcube14,Rcube15,Rcube16,Rcube17,Rcube18,Rcube19,Rcube20];
|
||||||
|
var Lcube = new THREE.Mesh( geometry, material );
|
||||||
|
Lcube.position.set(-10,10,10);
|
||||||
|
var Lcube1 = new THREE.Mesh( geometry, material );
|
||||||
|
Lcube1.position.set(-5,10,0);
|
||||||
|
var Lcube2 = new THREE.Mesh( geometry, material );
|
||||||
|
Lcube2.position.set(0,10,0);
|
||||||
|
var Lcube3 = new THREE.Mesh( geometry, material );
|
||||||
|
Lcube3.position.set(5,10,0);
|
||||||
|
var Lcube4 = new THREE.Mesh( geometry, material );
|
||||||
|
Lcube4.position.set(10,10,0);
|
||||||
|
|
||||||
|
var Lcube5 = new THREE.Mesh( geometry, material );
|
||||||
|
Lcube5.position.set(5,10,3);
|
||||||
|
var Lcube6 = new THREE.Mesh( geometry, material );
|
||||||
|
Lcube6.position.set(10,10,3);
|
||||||
|
var Lcube7 = new THREE.Mesh( geometry, material );
|
||||||
|
Lcube7.position.set(15,10,3);
|
||||||
|
var Lcube8 = new THREE.Mesh( geometry, material );
|
||||||
|
Lcube8.position.set(20,10,3);
|
||||||
|
|
||||||
|
var Lcube9 = new THREE.Mesh( geometry, material );
|
||||||
|
Lcube9.position.set(5,10,6);
|
||||||
|
var Lcube10 = new THREE.Mesh( geometry, material );
|
||||||
|
Lcube10.position.set(10,10,6);
|
||||||
|
var Lcube11 = new THREE.Mesh( geometry, material );
|
||||||
|
Lcube11.position.set(15,10,6);
|
||||||
|
var Lcube12 = new THREE.Mesh( geometry, material );
|
||||||
|
Lcube12.position.set(20,10,6);
|
||||||
|
|
||||||
|
var Lcube13 = new THREE.Mesh( geometry, material );
|
||||||
|
Lcube13.position.set(5,10,9);
|
||||||
|
var Lcube14 = new THREE.Mesh( geometry, material );
|
||||||
|
Lcube14.position.set(10,10,9);
|
||||||
|
var Lcube15 = new THREE.Mesh( geometry, material );
|
||||||
|
Lcube15.position.set(15,10,9);
|
||||||
|
var Lcube16 = new THREE.Mesh( geometry, material );
|
||||||
|
Lcube16.position.set(20,10,9);
|
||||||
|
|
||||||
|
var Lcube17 = new THREE.Mesh( geometry, material );
|
||||||
|
Lcube17.position.set(5,10,12);
|
||||||
|
var Lcube18 = new THREE.Mesh( geometry, material );
|
||||||
|
Lcube18.position.set(10,10,12);
|
||||||
|
var Lcube19 = new THREE.Mesh( geometry, material );
|
||||||
|
Lcube19.position.set(15,10,12);
|
||||||
|
var Lcube20 = new THREE.Mesh( geometry, material );
|
||||||
|
Lcube20.position.set(20,10,12);
|
||||||
|
|
||||||
|
var Rcube = new THREE.Mesh( geometry, material );
|
||||||
|
Rcube.position.set(-10,0,10);
|
||||||
|
var Rcube1 = new THREE.Mesh( geometry, material );
|
||||||
|
Rcube1.position.set(-5,0,0);
|
||||||
|
var Rcube2 = new THREE.Mesh( geometry, material );
|
||||||
|
Rcube2.position.set(0,0,0);
|
||||||
|
var Rcube3 = new THREE.Mesh( geometry, material );
|
||||||
|
Rcube3.position.set(5,0,0);
|
||||||
|
var Rcube4 = new THREE.Mesh( geometry, material );
|
||||||
|
Rcube4.position.set(10,0,0);
|
||||||
|
|
||||||
|
var Rcube5 = new THREE.Mesh( geometry, material );
|
||||||
|
Rcube5.position.set(5,0,3);
|
||||||
|
var Rcube6 = new THREE.Mesh( geometry, material );
|
||||||
|
Rcube6.position.set(10,0,3);
|
||||||
|
var Rcube7 = new THREE.Mesh( geometry, material );
|
||||||
|
Rcube7.position.set(15,0,3);
|
||||||
|
var Rcube8 = new THREE.Mesh( geometry, material );
|
||||||
|
Rcube8.position.set(20,0,3);
|
||||||
|
|
||||||
|
var Rcube9 = new THREE.Mesh( geometry, material );
|
||||||
|
Rcube9.position.set(5,0,6);
|
||||||
|
var Rcube10 = new THREE.Mesh( geometry, material );
|
||||||
|
Rcube10.position.set(10,0,6);
|
||||||
|
var Rcube11 = new THREE.Mesh( geometry, material );
|
||||||
|
Rcube11.position.set(15,0,6);
|
||||||
|
var Rcube12 = new THREE.Mesh( geometry, material );
|
||||||
|
Rcube12.position.set(20,0,6);
|
||||||
|
|
||||||
|
var Rcube13 = new THREE.Mesh( geometry, material );
|
||||||
|
Rcube13.position.set(5,0,9);
|
||||||
|
var Rcube14 = new THREE.Mesh( geometry, material );
|
||||||
|
Rcube14.position.set(10,0,9);
|
||||||
|
var Rcube15 = new THREE.Mesh( geometry, material );
|
||||||
|
Rcube15.position.set(15,0,9);
|
||||||
|
var Rcube16 = new THREE.Mesh( geometry, material );
|
||||||
|
Rcube16.position.set(20,0,9);
|
||||||
|
|
||||||
|
var Rcube17 = new THREE.Mesh( geometry, material );
|
||||||
|
Rcube17.position.set(5,0,12);
|
||||||
|
var Rcube18 = new THREE.Mesh( geometry, material );
|
||||||
|
Rcube18.position.set(10,0,12);
|
||||||
|
var Rcube19 = new THREE.Mesh( geometry, material );
|
||||||
|
Rcube19.position.set(15,0,12);
|
||||||
|
var Rcube20 = new THREE.Mesh( geometry, material );
|
||||||
|
Rcube20.position.set(20,0,12);
|
||||||
|
|
||||||
|
init();
|
||||||
|
finger(Lcube1,Lcube2,Lcube3,Lcube4);
|
||||||
|
finger(Lcube5,Lcube6,Lcube7,Lcube8);
|
||||||
|
finger(Lcube9,Lcube10,Lcube11,Lcube12);
|
||||||
|
finger(Lcube13,Lcube14,Lcube15,Lcube16);
|
||||||
|
finger(Lcube17,Lcube18,Lcube19,Lcube20);
|
||||||
|
|
||||||
|
finger(Rcube1,Rcube2,Rcube3,Rcube4);
|
||||||
|
finger(Rcube5,Rcube6,Rcube7,Rcube8);
|
||||||
|
finger(Rcube9,Rcube10,Rcube11,Rcube12);
|
||||||
|
finger(Rcube13,Rcube14,Rcube15,Rcube16);
|
||||||
|
finger(Rcube17,Rcube18,Rcube19,Rcube20);
|
||||||
|
link();
|
||||||
|
makeCurve()
|
||||||
|
animate();
|
||||||
|
//-----------------------------------------------------
|
||||||
|
|
||||||
|
function makeCurve(){
|
||||||
|
curve = new THREE.CatmullRomCurve3(a);
|
||||||
|
curve.curveType = "catmullrom";
|
||||||
|
curve.closed = false;//设置闭环
|
||||||
|
curve.tension = 0.7//设置弧度
|
||||||
|
|
||||||
|
}
|
||||||
|
function moveOnCurve(){
|
||||||
|
if(curve==null){
|
||||||
|
console.log("Loading");
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
if(progress<=1-velocity){
|
||||||
|
const point = curve.getPointAt(progress);
|
||||||
|
const pointBox = curve.getPointAt(progress+velocity);
|
||||||
|
|
||||||
|
if(point && pointBox){
|
||||||
|
Lcube4.position.set(point.x,point.y,point.z);
|
||||||
|
finger(Lcube1,Lcube2,Lcube3,Lcube4);
|
||||||
|
}
|
||||||
|
progress+=velocity;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
progress = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//-----------------------------------------------------
|
||||||
|
function init(){
|
||||||
|
// 初始化场景
|
||||||
|
scene = new THREE.Scene();
|
||||||
|
//初始化相机
|
||||||
|
camera = new THREE.PerspectiveCamera(60, window.innerWidth / window.innerHeight, 1, 1000);
|
||||||
|
camera.position.set(30, 30, 30);//设置相机位置
|
||||||
|
camera.lookAt(0,0,0); //设置相机方向(指向的场景对象)
|
||||||
|
//初始化渲染器
|
||||||
|
renderer = new THREE.WebGLRenderer({ antialias: true });
|
||||||
|
renderer.setClearColor(0xb9d3ff, 1); //设置背景颜色
|
||||||
|
renderer.setSize(window.innerWidth, window.innerHeight);
|
||||||
|
|
||||||
|
renderer.shadowMapEnabled = true;//开启阴影,加上阴影渲染
|
||||||
|
document.body.appendChild(renderer.domElement);//渲染到浏览器
|
||||||
|
controls = new OrbitControls(camera, renderer.domElement);
|
||||||
|
controls.update();
|
||||||
|
}
|
||||||
|
function link(){
|
||||||
|
scene.add(Lcube);
|
||||||
|
var points = [];
|
||||||
|
points.push( new THREE.Vector3( Lcube1.position.x,Lcube1.position.y,Lcube1.position.z ) );
|
||||||
|
points.push( new THREE.Vector3( Lcube.position.x,Lcube.position.y,Lcube.position.z ) );
|
||||||
|
points.push( new THREE.Vector3( Lcube5.position.x,Lcube5.position.y,Lcube5.position.z ) );
|
||||||
|
points.push( new THREE.Vector3( Lcube9.position.x,Lcube9.position.y,Lcube9.position.z ) );
|
||||||
|
points.push( new THREE.Vector3( Lcube13.position.x,Lcube13.position.y,Lcube13.position.z ) );
|
||||||
|
points.push( new THREE.Vector3( Lcube17.position.x,Lcube17.position.y,Lcube17.position.z ) );
|
||||||
|
points.push( new THREE.Vector3( Lcube.position.x,Lcube.position.y,Lcube.position.z ) );
|
||||||
|
var geometry1 = new THREE.BufferGeometry().setFromPoints( points );
|
||||||
|
var line1 = new THREE.Line( geometry1, material );
|
||||||
|
scene.add( line1 );
|
||||||
|
|
||||||
|
scene.add(Rcube);
|
||||||
|
var points = [];
|
||||||
|
points.push( new THREE.Vector3( Rcube1.position.x,Rcube1.position.y,Rcube1.position.z ) );
|
||||||
|
points.push( new THREE.Vector3( Rcube.position.x,Rcube.position.y,Rcube.position.z ) );
|
||||||
|
points.push( new THREE.Vector3( Rcube5.position.x,Rcube5.position.y,Rcube5.position.z ) );
|
||||||
|
points.push( new THREE.Vector3( Rcube9.position.x,Rcube9.position.y,Rcube9.position.z ) );
|
||||||
|
points.push( new THREE.Vector3( Rcube13.position.x,Rcube13.position.y,Rcube13.position.z ) );
|
||||||
|
points.push( new THREE.Vector3( Rcube17.position.x,Rcube17.position.y,Rcube17.position.z ) );
|
||||||
|
points.push( new THREE.Vector3( Rcube.position.x,Rcube.position.y,Rcube.position.z ) );
|
||||||
|
var geometry2 = new THREE.BufferGeometry().setFromPoints( points );
|
||||||
|
var line2 = new THREE.Line( geometry2, material1 );
|
||||||
|
scene.add( line2 );
|
||||||
|
}
|
||||||
|
|
||||||
|
function finger(value,value1,value2,value3){
|
||||||
|
scene.add( value );
|
||||||
|
scene.add( value1 );
|
||||||
|
scene.add( value2 );
|
||||||
|
scene.add( value3 );
|
||||||
|
|
||||||
|
var points = [];
|
||||||
|
points.push( new THREE.Vector3( value.position.x,value.position.y,value.position.z ) );
|
||||||
|
points.push( new THREE.Vector3( value1.position.x,value1.position.y,value1.position.z ) );
|
||||||
|
points.push( new THREE.Vector3( value2.position.x,value2.position.y,value2.position.z ) );
|
||||||
|
points.push( new THREE.Vector3( value3.position.x,value3.position.y,value3.position.z ) );
|
||||||
|
var geometry1 = new THREE.BufferGeometry().setFromPoints( points );
|
||||||
|
var line = new THREE.Line( geometry1, material );
|
||||||
|
scene.add( line );
|
||||||
|
|
||||||
|
}
|
||||||
|
function animate() {
|
||||||
|
requestAnimationFrame( animate );
|
||||||
|
moveOnCurve();
|
||||||
|
// required if controls.enableDamping or controls.autoRotate are set to true
|
||||||
|
controls.update();
|
||||||
|
renderer.render( scene, camera );
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,230 @@
|
|||||||
|
import * as THREE from "/static/three.js-r122/build/three.module.js"
|
||||||
|
import {OrbitControls} from "/static/three.js-r122/examples/jsm/controls/OrbitControls.js";
|
||||||
|
//定义全局变量
|
||||||
|
//定义全局变量
|
||||||
|
var geometry = new THREE.BoxGeometry(0.1,0.1,0.1);
|
||||||
|
var Boxmaterial = new THREE.MeshBasicMaterial({color:0x00ff00});
|
||||||
|
var Lmaterial = new THREE.MeshBasicMaterial({color:0x800080});
|
||||||
|
var Rmaterial = new THREE.MeshBasicMaterial({color:0x800080});
|
||||||
|
|
||||||
|
var progress = [[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]];
|
||||||
|
var velocity = 0.01;
|
||||||
|
|
||||||
|
var scene;
|
||||||
|
var camera;
|
||||||
|
var renderer;
|
||||||
|
var controls;
|
||||||
|
|
||||||
|
var Lhands=[]
|
||||||
|
var Rhands=[]
|
||||||
|
var hands = [Lhands,Rhands];
|
||||||
|
var Lline;
|
||||||
|
var Rline;
|
||||||
|
var value1;
|
||||||
|
var curve ;
|
||||||
|
var strings=[];
|
||||||
|
var string0 =[];
|
||||||
|
"议案速度"
|
||||||
|
var a="0.1925947666168213,0.5473065376281738,2.3206620625160213e-08,0.3033226728439331,0.5114372372627258,0.04651688411831856,0.41777345538139343,0.5392630696296692,0.027217578142881393,0.4958229064941406,0.6215819716453552,-0.010156922042369843,0.544066309928894,0.7091509103775024,-0.04631917551159859,0.48519444465637207,0.4558757543563843,0.0012310644378885627,0.6001424193382263,0.4919063448905945,-0.02964494377374649,0.6723194122314453,0.4914349913597107,-0.05351248010993004,0.7327231764793396,0.48740360140800476,-0.07321580499410629,0.4649563729763031,0.4880273640155792,-0.05196492746472359,0.5244404673576355,0.6586609482765198,-0.07859423011541367,0.4717526137828827,0.6705580949783325,-0.07350102812051773,0.44495320320129395,0.636782169342041,-0.06894036382436752,0.42801740765571594,0.542985737323761,-0.10230648517608643,0.4637511670589447,0.7040750980377197,-0.10944212228059769,0.41616007685661316,0.6964676380157471,-0.08283781260251999,0.39777180552482605,0.6557613611221313,-0.06995978206396103,0.3863465487957001,0.6023310422897339,-0.1533883661031723,0.41023093461990356,0.7209582328796387,-0.14129549264907837,0.3680790066719055,0.7129360437393188,-0.11648382246494293,0.3500169515609741,0.6766629219055176,-0.10399384796619415"
|
||||||
|
var b="0.3074747920036316,0.9019898772239685,1.0195339683605198e-08,0.25297945737838745,0.741093635559082,0.11882976442575455,0.2568987011909485,0.6188923120498657,0.15985067188739777,0.2994866967201233,0.5347099900245667,0.18189513683319092,0.34198740124702454,0.4815441370010376,0.208918958902359,0.2663106322288513,0.5142314434051514,0.08551575988531113,0.3212432861328125,0.38244909048080444,0.1309291571378708,0.3601645231246948,0.3609071969985962,0.17727282643318176,0.38025137782096863,0.35570672154426575,0.20493900775909424,0.33115246891975403,0.5110653042793274,0.03439659997820854,0.34486210346221924,0.31776756048202515,0.06974716484546661,0.362997829914093,0.23869016766548157,0.11691167950630188,0.37287649512290955,0.1874750852584839,0.14666494727134705,0.395782470703125,0.5395836234092712,-0.003572869813069701,0.44010263681411743,0.4286065399646759,0.05928943678736687,0.4411655068397522,0.4772379696369171,0.13026396930217743,0.4254198670387268,0.5230597853660583,0.17077606916427612,0.4580012559890747,0.5990009903907776,-0.03686628118157387,0.4788168966770172,0.5118088126182556,0.027214739471673965,0.47198575735092163,0.5557542443275452,0.08088598400354385,0.45820629596710205,0.5955811142921448,0.1158442348241806"
|
||||||
|
var c="0.4523501992225647,0.1942148208618164,1.7096501991886726e-08,0.4074195623397827,0.29815971851348877,-0.08865319937467575,0.3774319887161255,0.42925089597702026,-0.1571134626865387,0.33004724979400635,0.5312825441360474,-0.22099411487579346,0.267127126455307,0.6064754724502563,-0.2902185618877411,0.5546683669090271,0.5435442328453064,-0.1285058706998825,0.5916881561279297,0.7007477283477783,-0.20100270211696625,0.6193171739578247,0.7940925359725952,-0.25689464807510376,0.6485602855682373,0.8795797228813171,-0.2977239191532135,0.6190973520278931,0.4962724447250366,-0.1330675482749939,0.6876095533370972,0.6502389311790466,-0.19820000231266022,0.7323645353317261,0.7488104701042175,-0.25582656264305115,0.7742902040481567,0.8370606899261475,-0.30281922221183777,0.6567232012748718,0.4195241332054138,-0.14580829441547394,0.7421215176582336,0.5388163328170776,-0.20962446928024292,0.7959713935852051,0.6220346093177795,-0.268515020608902,0.8430056571960449,0.7013962864875793,-0.3116633892059326,0.6741085052490234,0.32284364104270935,-0.1664796620607376,0.756801187992096,0.39365607500076294,-0.22251586616039276,0.8009949922561646,0.44722166657447815,-0.2642620801925659,0.840006411075592,0.5034887790679932,-0.29797473549842834"
|
||||||
|
|
||||||
|
var string = "0.3540383279323578,0.8863077163696289,5.255019974725883e-09,0.42504027485847473,0.8655926585197449,-0.03437764570116997,0.48042523860931396,0.806210994720459,-0.05496273189783096,0.5089290738105774,0.7344641089439392,-0.07449766248464584,0.5281661748886108,0.673363447189331,-0.09565073251724243,0.4463174641132355,0.6658893823623657,-0.031486935913562775,0.4772888720035553,0.5715258717536926,-0.05420501157641411,0.49460917711257935,0.5125950574874878,-0.07035552710294724,0.5082244873046875,0.4608921408653259,-0.0821903645992279,0.4041683077812195,0.6421458125114441,-0.03437076508998871,0.42221447825431824,0.5334337949752808,-0.054231300950050354,0.4320411682128906,0.46971893310546875,-0.07292795926332474,0.43996569514274597,0.41378194093704224,-0.08764351159334183,0.361648291349411,0.6407799124717712,-0.04192019999027252,0.3719751238822937,0.5392971038818359,-0.06619732081890106,0.37998464703559875,0.4714270234107971,-0.08831380307674408,0.38868609070777893,0.4155805706977844,-0.10313612222671509,0.3165479898452759,0.6576754450798035,-0.05323990061879158,0.31218597292900085,0.577325165271759,-0.0751069039106369,0.3108590245246887,0.5289334058761597,-0.09076160192489624,0.312467098236084,0.4876782298088074,-0.10198315232992172,0.3044047951698303,0.9663895964622498,6.9287020565411694e-09,0.38538458943367004,0.9433897733688354,-0.009958998300135136,0.4416201412677765,0.8743448257446289,-0.019099092110991478,0.4695747494697571,0.795817494392395,-0.021065426990389824,0.4836556017398834,0.7308721542358398,-0.019284158945083618,0.39677807688713074,0.7579846382141113,-0.04791314899921417,0.42566627264022827,0.6467018723487854,-0.04389629140496254,0.43870189785957336,0.5789888501167297,-0.03294100612401962,0.4477599859237671,0.5318640470504761,-0.02457273006439209,0.34907078742980957,0.7333060503005981,-0.03398894891142845,0.37949085235595703,0.6184651851654053,-0.02437933348119259,0.39749619364738464,0.553763747215271,-0.006116447038948536,0.4120081663131714,0.5092087984085083,0.004803979303687811,0.30696022510528564,0.7298744320869446,-0.014533798210322857,0.336764395236969,0.6606125235557556,0.009672199375927448,0.35517191886901855,0.6632943749427795,0.041734661906957626,0.36504673957824707,0.6806830167770386,0.06082293391227722,0.27332603931427,0.740144670009613,0.0023831308353692293,0.2884930372238159,0.6849370002746582,0.02794426493346691,0.29987964034080505,0.6789973974227905,0.05210520327091217,0.3059382438659668,0.68449467420578,0.06873659789562225";
|
||||||
|
strings.push(string);
|
||||||
|
// strings.push(a);
|
||||||
|
// strings.push(a);
|
||||||
|
// strings.push(c);
|
||||||
|
strings.push(string)
|
||||||
|
strings.push(string)
|
||||||
|
strings.push(string);
|
||||||
|
var p=0;
|
||||||
|
var Rpoints=[new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0)
|
||||||
|
,new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0)
|
||||||
|
,new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0)
|
||||||
|
,new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0)
|
||||||
|
,new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0)
|
||||||
|
,new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0)
|
||||||
|
,new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0)
|
||||||
|
,new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0)
|
||||||
|
,new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0)
|
||||||
|
,new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0)
|
||||||
|
,new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0)
|
||||||
|
,new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0)
|
||||||
|
,new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0),new THREE.Vector3(0,0,0)];
|
||||||
|
//-------------------------------------------------
|
||||||
|
function creat(){
|
||||||
|
for (let i = 0; i < 21; i++) {
|
||||||
|
Lhands.push(new THREE.Mesh( geometry, Boxmaterial ))
|
||||||
|
Rhands.push(new THREE.Mesh( geometry, Boxmaterial ))
|
||||||
|
}
|
||||||
|
init()
|
||||||
|
add();
|
||||||
|
makeValue(string);
|
||||||
|
console.log(value1);
|
||||||
|
makeCurve();
|
||||||
|
animate();
|
||||||
|
}
|
||||||
|
function init(){
|
||||||
|
//初始化场景
|
||||||
|
scene = new THREE.Scene();
|
||||||
|
//初始化相机
|
||||||
|
camera = new THREE.PerspectiveCamera(60, window.innerWidth / window.innerHeight, 1, 1000);
|
||||||
|
camera.position.set(10, 15, 10);//设置相机位置
|
||||||
|
camera.lookAt(0,0,0); //设置相机方向(指向的场景对象)
|
||||||
|
//初始化渲染器
|
||||||
|
renderer = new THREE.WebGLRenderer({ antialias: true });
|
||||||
|
renderer.setClearColor(0xb9d3ff, 1); //设置背景颜色
|
||||||
|
renderer.setSize(950, 415);
|
||||||
|
|
||||||
|
renderer.shadowMapEnabled = true;//开启阴影,加上阴影渲染
|
||||||
|
document.getElementById("container").appendChild(renderer.domElement);//渲染到浏览器
|
||||||
|
controls = new OrbitControls(camera, renderer.domElement);
|
||||||
|
//controls.enableDamping = true;//阻尼
|
||||||
|
controls.update();
|
||||||
|
}
|
||||||
|
function add(){
|
||||||
|
for(let i = 0;i<21;i++){
|
||||||
|
scene.add(Lhands[i]);
|
||||||
|
}
|
||||||
|
/*for(let i = 0;i<21;i++){
|
||||||
|
scene.add(Rhand[i]);
|
||||||
|
}*/
|
||||||
|
let geometry = new THREE.BufferGeometry().setFromPoints([new THREE.Vector3(0,0,0)]);
|
||||||
|
let geometry1 = new THREE.BufferGeometry().setFromPoints([new THREE.Vector3(0,0,0)]);
|
||||||
|
Lline = new THREE.Line(geometry,Lmaterial);
|
||||||
|
Rline = new THREE.Line(geometry1,Rmaterial);
|
||||||
|
scene.add(Lline);
|
||||||
|
scene.add(Rline);
|
||||||
|
}
|
||||||
|
|
||||||
|
function animate(){
|
||||||
|
requestAnimationFrame(animate);
|
||||||
|
moveOnCurve();
|
||||||
|
//console.log(Lhands);
|
||||||
|
controls.update;
|
||||||
|
updateLine();
|
||||||
|
//获取屏幕宽度
|
||||||
|
var htmlWidth = document.documentElement.clientWidth;
|
||||||
|
var htmlHeight = document.documentElement.clientHeight;
|
||||||
|
//窗口自适应
|
||||||
|
console.log(htmlWidth);
|
||||||
|
if(htmlWidth>900&&htmlWidth<950&&htmlHeight<1200){
|
||||||
|
renderer.setSize(900, 415);
|
||||||
|
|
||||||
|
}
|
||||||
|
else if(htmlWidth>950&&htmlHeight>1200){
|
||||||
|
renderer.setSize(950, 1200);
|
||||||
|
}
|
||||||
|
else if(htmlWidth>850&&htmlWidth<900&&htmlHeight<1200){
|
||||||
|
renderer.setSize(850, 415);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
renderer.setSize(950, 415);
|
||||||
|
}
|
||||||
|
if(progress[0][0]>1-velocity&&p!=strings.length-1){
|
||||||
|
progress = [[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]];
|
||||||
|
makeValue(strings[p]);
|
||||||
|
makeCurve();
|
||||||
|
p++;
|
||||||
|
}
|
||||||
|
renderer.render(scene,camera);
|
||||||
|
}
|
||||||
|
function makeValue(value){
|
||||||
|
value1 = [[[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]]
|
||||||
|
,[[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]]];
|
||||||
|
var value = value.split(',');
|
||||||
|
for(let i=0;i<value.length;i++){
|
||||||
|
value[i] =parseFloat(value[i])*10;
|
||||||
|
}
|
||||||
|
for(let k=0;k<value.length/63;k++){
|
||||||
|
for(let i=0;i<21;i++){
|
||||||
|
|
||||||
|
var x = value[0+i*3+k*63];
|
||||||
|
var y = value[1+i*3+k*63];
|
||||||
|
var z = value[2+i*3+k*63];
|
||||||
|
value1[0][i].push(new THREE.Vector3(x,y,z));
|
||||||
|
|
||||||
|
}}
|
||||||
|
}
|
||||||
|
function makeCurve(){
|
||||||
|
curve = [[[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]],[[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]]];
|
||||||
|
for(let i = 0;i<1;i++){
|
||||||
|
for(let j=0;j<21;j++){
|
||||||
|
if(value1[i][j].length!=0){
|
||||||
|
curve[i][j] = new THREE.CatmullRomCurve3(value1[i][j]);
|
||||||
|
curve[i][j].curveType = "catmullrom";
|
||||||
|
curve[i][j].closed = false;
|
||||||
|
curve[i][j].tension = 0.7;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function moveOnCurve(){
|
||||||
|
let point;
|
||||||
|
let pointBox;
|
||||||
|
for(let i=0;i<1;i++){
|
||||||
|
for(let j=0;j<21;j++){
|
||||||
|
if(curve[i][j].length==0){
|
||||||
|
console.log("Loading");
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
if(progress[i][j]<=1-velocity){
|
||||||
|
point = curve[i][j].getPointAt(progress[i][j]);
|
||||||
|
pointBox = curve[i][j].getPointAt(progress[i][j]+velocity);
|
||||||
|
if(point && pointBox){
|
||||||
|
hands[i][j].position.set(point.x,point.y,point.z);
|
||||||
|
//console.log(Lhands20);
|
||||||
|
}
|
||||||
|
progress[i][j]+=velocity;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function updateLine(){
|
||||||
|
let Lpoints=[new THREE.Vector3(Lhands[4].position.x,Lhands[4].position.y,Lhands[4].position.z),new THREE.Vector3(Lhands[3].position.x,Lhands[3].position.y,Lhands[3].position.z),new THREE.Vector3(Lhands[2].position.x,Lhands[2].position.y,Lhands[2].position.z),new THREE.Vector3(Lhands[1].position.x,Lhands[1].position.y,Lhands[1].position.z)
|
||||||
|
,new THREE.Vector3(Lhands[0].position.x,Lhands[0].position.y,Lhands[0].position.z),new THREE.Vector3(Lhands[5].position.x,Lhands[5].position.y,Lhands[5].position.z),new THREE.Vector3(Lhands[6].position.x,Lhands[6].position.y,Lhands[6].position.z),new THREE.Vector3(Lhands[7].position.x,Lhands[7].position.y,Lhands[7].position.z)
|
||||||
|
,new THREE.Vector3(Lhands[8].position.x,Lhands[8].position.y,Lhands[8].position.z),new THREE.Vector3(Lhands[7].position.x,Lhands[7].position.y,Lhands[7].position.z),new THREE.Vector3(Lhands[6].position.x,Lhands[6].position.y,Lhands[6].position.z),new THREE.Vector3(Lhands[5].position.x,Lhands[5].position.y,Lhands[5].position.z)
|
||||||
|
,new THREE.Vector3(Lhands[9].position.x,Lhands[9].position.y,Lhands[9].position.z),new THREE.Vector3(Lhands[10].position.x,Lhands[10].position.y,Lhands[10].position.z),new THREE.Vector3(Lhands[11].position.x,Lhands[11].position.y,Lhands[11].position.z),new THREE.Vector3(Lhands[12].position.x,Lhands[12].position.y,Lhands[12].position.z)
|
||||||
|
,new THREE.Vector3(Lhands[11].position.x,Lhands[11].position.y,Lhands[11].position.z),new THREE.Vector3(Lhands[10].position.x,Lhands[10].position.y,Lhands[10].position.z),new THREE.Vector3(Lhands[9].position.x,Lhands[9].position.y,Lhands[9].position.z),new THREE.Vector3(Lhands[13].position.x,Lhands[13].position.y,Lhands[13].position.z)
|
||||||
|
,new THREE.Vector3(Lhands[14].position.x,Lhands[14].position.y,Lhands[14].position.z),new THREE.Vector3(Lhands[15].position.x,Lhands[15].position.y,Lhands[15].position.z),new THREE.Vector3(Lhands[16].position.x,Lhands[16].position.y,Lhands[16].position.z),new THREE.Vector3(Lhands[15].position.x,Lhands[15].position.y,Lhands[15].position.z)
|
||||||
|
,new THREE.Vector3(Lhands[14].position.x,Lhands[14].position.y,Lhands[14].position.z),new THREE.Vector3(Lhands[13].position.x,Lhands[13].position.y,Lhands[13].position.z),new THREE.Vector3(Lhands[17].position.x,Lhands[17].position.y,Lhands[17].position.z),new THREE.Vector3(Lhands[18].position.x,Lhands[18].position.y,Lhands[18].position.z)
|
||||||
|
,new THREE.Vector3(Lhands[19].position.x,Lhands[19].position.y,Lhands[19].position.z),new THREE.Vector3(Lhands[20].position.x,Lhands[20].position.y,Lhands[20].position.z),new THREE.Vector3(Lhands[19].position.x,Lhands[19].position.y,Lhands[19].position.z),new THREE.Vector3(Lhands[18].position.x,Lhands[18].position.y,Lhands[18].position.z)
|
||||||
|
,new THREE.Vector3(Lhands[17].position.x,Lhands[17].position.y,Lhands[17].position.z),new THREE.Vector3(Lhands[0].position.x,Lhands[0].position.y,Lhands[0].position.z)
|
||||||
|
];
|
||||||
|
let geometry = new THREE.BufferGeometry().setFromPoints(Lpoints);
|
||||||
|
let geometry1 = new THREE.BufferGeometry().setFromPoints(Rpoints);
|
||||||
|
scene.remove(Lline);
|
||||||
|
Lline = new THREE.Line(geometry,Lmaterial);
|
||||||
|
Rline = new THREE.Line(geometry1,Rmaterial);
|
||||||
|
scene.add(Lline);
|
||||||
|
}
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
creat()
|
||||||
|
|
||||||
|
function ajax(str) {
|
||||||
|
var xmlhttp;
|
||||||
|
if (str.length==0)
|
||||||
|
{
|
||||||
|
document.getElementById("txtHint").innerHTML="";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (window.XMLHttpRequest) xmlhttp=new XMLHttpRequest();
|
||||||
|
else xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
|
||||||
|
xmlhttp.onreadystatechange=function()
|
||||||
|
{
|
||||||
|
if (xmlhttp.readyState==4 && xmlhttp.status==200)
|
||||||
|
{
|
||||||
|
document.getElementById("txtHint").innerHTML+=xmlhttp.responseText;
|
||||||
|
num=0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
xmlhttp.open("GET","/xyz?="+str,true)
|
||||||
|
xmlhttp.send();
|
||||||
|
}
|
||||||
|
document.getElementById("btn").onclick = function(){
|
||||||
|
var input=document.getElementById("input")
|
||||||
|
var str = input.innerText
|
||||||
|
ajax(str)
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2002-2019 Igor Sysoev
|
||||||
|
* Copyright (C) 2011-2019 Nginx, Inc.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. 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.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
|
||||||
|
*/
|
@ -0,0 +1,23 @@
|
|||||||
|
|
||||||
|
default: build
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf Makefile objs
|
||||||
|
|
||||||
|
build:
|
||||||
|
$(MAKE) -f objs/Makefile
|
||||||
|
|
||||||
|
install:
|
||||||
|
$(MAKE) -f objs/Makefile install
|
||||||
|
|
||||||
|
modules:
|
||||||
|
$(MAKE) -f objs/Makefile modules
|
||||||
|
|
||||||
|
upgrade:
|
||||||
|
./build/sbin/nginx -t
|
||||||
|
|
||||||
|
kill -USR2 `cat ./build/logs/nginx.pid`
|
||||||
|
sleep 1
|
||||||
|
test -f ./build/logs/nginx.pid.oldbin
|
||||||
|
|
||||||
|
kill -QUIT `cat ./build/logs/nginx.pid.oldbin`
|
@ -0,0 +1,3 @@
|
|||||||
|
|
||||||
|
Documentation is available at http://nginx.org
|
||||||
|
|
@ -0,0 +1,14 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
# aCC: HP ANSI C++ B3910B A.03.55.02
|
||||||
|
|
||||||
|
# C89 mode
|
||||||
|
|
||||||
|
CFLAGS="$CFLAGS -Ae"
|
||||||
|
CC_TEST_FLAGS="-Ae"
|
||||||
|
|
||||||
|
PCRE_OPT="$PCRE_OPT -Ae"
|
||||||
|
ZLIB_OPT="$ZLIB_OPT -Ae"
|
@ -0,0 +1,71 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
# Borland C++ 5.5
|
||||||
|
|
||||||
|
# optimizations
|
||||||
|
|
||||||
|
# maximize speed
|
||||||
|
CFLAGS="$CFLAGS -O2"
|
||||||
|
|
||||||
|
case $CPU in
|
||||||
|
pentium)
|
||||||
|
# optimize for Pentium and Athlon
|
||||||
|
CPU_OPT="-5"
|
||||||
|
;;
|
||||||
|
|
||||||
|
pentiumpro)
|
||||||
|
# optimize for Pentium Pro, Pentium II and Pentium III
|
||||||
|
CPU_OPT="-6"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# __stdcall
|
||||||
|
#CPU_OPT="$CPU_OPT -ps"
|
||||||
|
# __fastcall
|
||||||
|
#CPU_OPT="$CPU_OPT -pr"
|
||||||
|
|
||||||
|
CFLAGS="$CFLAGS $CPU_OPT"
|
||||||
|
|
||||||
|
# multithreaded
|
||||||
|
CFLAGS="$CFLAGS -tWM"
|
||||||
|
|
||||||
|
# stop on warning
|
||||||
|
CFLAGS="$CFLAGS -w!"
|
||||||
|
|
||||||
|
# disable logo
|
||||||
|
CFLAGS="$CFLAGS -q"
|
||||||
|
|
||||||
|
|
||||||
|
# precompiled headers
|
||||||
|
CORE_DEPS="$CORE_DEPS $NGX_OBJS/ngx_config.csm"
|
||||||
|
NGX_PCH="$NGX_OBJS/ngx_config.csm"
|
||||||
|
NGX_BUILD_PCH="-H=$NGX_OBJS/ngx_config.csm"
|
||||||
|
NGX_USE_PCH="-Hu -H=$NGX_OBJS/ngx_config.csm"
|
||||||
|
|
||||||
|
|
||||||
|
# Win32 GUI mode application
|
||||||
|
#LINK="\$(CC) -laa"
|
||||||
|
|
||||||
|
|
||||||
|
# the resource file
|
||||||
|
NGX_RES="$NGX_OBJS/nginx.res"
|
||||||
|
NGX_RCC="brcc32 -fo$NGX_OBJS/nginx.res \$(CORE_INCS) $NGX_WIN32_RC"
|
||||||
|
# the pragma allows to link the resource file using bcc32 and
|
||||||
|
# to avoid the direct ilink32 calling and the c0w32.obj's WinMain/main problem
|
||||||
|
NGX_PRAGMA="#pragma resource \"$NGX_OBJS/nginx.res\""
|
||||||
|
|
||||||
|
|
||||||
|
ngx_include_opt="-I"
|
||||||
|
ngx_objout="-o"
|
||||||
|
ngx_binout="-e"
|
||||||
|
ngx_objext="obj"
|
||||||
|
|
||||||
|
ngx_long_start='@&&|
|
||||||
|
'
|
||||||
|
ngx_long_end='|'
|
||||||
|
|
||||||
|
ngx_regex_dirsep='\\'
|
||||||
|
ngx_dirsep="\\"
|
@ -0,0 +1,46 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
# Compaq C V6.5-207
|
||||||
|
|
||||||
|
ngx_include_opt="-I"
|
||||||
|
|
||||||
|
# warnings
|
||||||
|
|
||||||
|
CFLAGS="$CFLAGS -msg_enable level6 -msg_fatal level6"
|
||||||
|
|
||||||
|
CFLAGS="$CFLAGS -msg_disable unknownmacro"
|
||||||
|
CFLAGS="$CFLAGS -msg_disable unusedincl"
|
||||||
|
CFLAGS="$CFLAGS -msg_disable unnecincl"
|
||||||
|
CFLAGS="$CFLAGS -msg_disable nestincl"
|
||||||
|
CFLAGS="$CFLAGS -msg_disable strctpadding"
|
||||||
|
CFLAGS="$CFLAGS -msg_disable ansialiascast"
|
||||||
|
CFLAGS="$CFLAGS -msg_disable inlinestoclsmod"
|
||||||
|
CFLAGS="$CFLAGS -msg_disable cxxkeyword"
|
||||||
|
CFLAGS="$CFLAGS -msg_disable longlongsufx"
|
||||||
|
CFLAGS="$CFLAGS -msg_disable valuepres"
|
||||||
|
|
||||||
|
# STUB
|
||||||
|
CFLAGS="$CFLAGS -msg_disable truncintcast"
|
||||||
|
CFLAGS="$CFLAGS -msg_disable trunclongcast"
|
||||||
|
|
||||||
|
CFLAGS="$CFLAGS -msg_disable truncintasn"
|
||||||
|
CFLAGS="$CFLAGS -msg_disable trunclongint"
|
||||||
|
CFLAGS="$CFLAGS -msg_disable intconcastsgn"
|
||||||
|
CFLAGS="$CFLAGS -msg_disable intconstsign"
|
||||||
|
CFLAGS="$CFLAGS -msg_disable switchlong"
|
||||||
|
CFLAGS="$CFLAGS -msg_disable subscrbounds2"
|
||||||
|
|
||||||
|
CFLAGS="$CFLAGS -msg_disable hexoctunsign"
|
||||||
|
|
||||||
|
CFLAGS="$CFLAGS -msg_disable ignorecallval"
|
||||||
|
CFLAGS="$CFLAGS -msg_disable nonstandcast"
|
||||||
|
CFLAGS="$CFLAGS -msg_disable embedcomment"
|
||||||
|
CFLAGS="$CFLAGS -msg_disable unreachcode"
|
||||||
|
CFLAGS="$CFLAGS -msg_disable questcompare2"
|
||||||
|
CFLAGS="$CFLAGS -msg_disable unusedtop"
|
||||||
|
CFLAGS="$CFLAGS -msg_disable unrefdecl"
|
||||||
|
|
||||||
|
CFLAGS="$CFLAGS -msg_disable bitnotint"
|
@ -0,0 +1,99 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
# clang
|
||||||
|
|
||||||
|
|
||||||
|
NGX_CLANG_VER=`$CC -v 2>&1 | grep 'version' 2>&1 \
|
||||||
|
| sed -n -e 's/^.*clang version \(.*\)/\1/p' \
|
||||||
|
-e 's/^.*LLVM version \(.*\)/\1/p'`
|
||||||
|
|
||||||
|
echo " + clang version: $NGX_CLANG_VER"
|
||||||
|
|
||||||
|
have=NGX_COMPILER value="\"clang $NGX_CLANG_VER\"" . auto/define
|
||||||
|
|
||||||
|
|
||||||
|
CC_TEST_FLAGS="-pipe"
|
||||||
|
|
||||||
|
|
||||||
|
# optimizations
|
||||||
|
|
||||||
|
#NGX_CLANG_OPT="-O2"
|
||||||
|
#NGX_CLANG_OPT="-Oz"
|
||||||
|
NGX_CLANG_OPT="-O"
|
||||||
|
|
||||||
|
case $CPU in
|
||||||
|
pentium)
|
||||||
|
# optimize for Pentium
|
||||||
|
CPU_OPT="-march=pentium"
|
||||||
|
NGX_CPU_CACHE_LINE=32
|
||||||
|
;;
|
||||||
|
|
||||||
|
pentiumpro | pentium3)
|
||||||
|
# optimize for Pentium Pro, Pentium II and Pentium III
|
||||||
|
CPU_OPT="-march=pentiumpro"
|
||||||
|
NGX_CPU_CACHE_LINE=32
|
||||||
|
;;
|
||||||
|
|
||||||
|
pentium4)
|
||||||
|
# optimize for Pentium 4
|
||||||
|
CPU_OPT="-march=pentium4"
|
||||||
|
NGX_CPU_CACHE_LINE=128
|
||||||
|
;;
|
||||||
|
|
||||||
|
athlon)
|
||||||
|
# optimize for Athlon
|
||||||
|
CPU_OPT="-march=athlon"
|
||||||
|
NGX_CPU_CACHE_LINE=64
|
||||||
|
;;
|
||||||
|
|
||||||
|
opteron)
|
||||||
|
# optimize for Opteron
|
||||||
|
CPU_OPT="-march=opteron"
|
||||||
|
NGX_CPU_CACHE_LINE=64
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
CC_AUX_FLAGS="$CC_AUX_FLAGS $CPU_OPT"
|
||||||
|
|
||||||
|
|
||||||
|
CFLAGS="$CFLAGS -pipe $CPU_OPT"
|
||||||
|
|
||||||
|
if [ ".$PCRE_OPT" = "." ]; then
|
||||||
|
PCRE_OPT="-O2 -pipe $CPU_OPT"
|
||||||
|
else
|
||||||
|
PCRE_OPT="$PCRE_OPT -pipe"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ".$ZLIB_OPT" = "." ]; then
|
||||||
|
ZLIB_OPT="-O2 -pipe $CPU_OPT"
|
||||||
|
else
|
||||||
|
ZLIB_OPT="$ZLIB_OPT -pipe"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# warnings
|
||||||
|
|
||||||
|
CFLAGS="$CFLAGS $NGX_CLANG_OPT -Wall -Wextra -Wpointer-arith"
|
||||||
|
CFLAGS="$CFLAGS -Wconditional-uninitialized"
|
||||||
|
#CFLAGS="$CFLAGS -Wmissing-prototypes"
|
||||||
|
|
||||||
|
# we have a lot of unused function arguments
|
||||||
|
CFLAGS="$CFLAGS -Wno-unused-parameter"
|
||||||
|
|
||||||
|
# deprecated system OpenSSL library on OS X
|
||||||
|
if [ "$NGX_SYSTEM" = "Darwin" ]; then
|
||||||
|
CFLAGS="$CFLAGS -Wno-deprecated-declarations"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# stop on warning
|
||||||
|
CFLAGS="$CFLAGS -Werror"
|
||||||
|
|
||||||
|
# debug
|
||||||
|
CFLAGS="$CFLAGS -g"
|
||||||
|
|
||||||
|
if [ ".$CPP" = "." ]; then
|
||||||
|
CPP="$CC -E"
|
||||||
|
fi
|
@ -0,0 +1,254 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
LINK="\$(CC)"
|
||||||
|
|
||||||
|
MAIN_LINK=
|
||||||
|
MODULE_LINK="-shared"
|
||||||
|
|
||||||
|
ngx_include_opt="-I "
|
||||||
|
ngx_compile_opt="-c"
|
||||||
|
ngx_pic_opt="-fPIC"
|
||||||
|
ngx_objout="-o "
|
||||||
|
ngx_binout="-o "
|
||||||
|
ngx_objext="o"
|
||||||
|
ngx_binext=
|
||||||
|
ngx_modext=".so"
|
||||||
|
|
||||||
|
ngx_long_start=
|
||||||
|
ngx_long_end=
|
||||||
|
|
||||||
|
ngx_regex_dirsep="\/"
|
||||||
|
ngx_dirsep='/'
|
||||||
|
|
||||||
|
ngx_regex_cont=' \\\
|
||||||
|
'
|
||||||
|
ngx_cont=' \
|
||||||
|
'
|
||||||
|
ngx_tab=' \
|
||||||
|
'
|
||||||
|
ngx_spacer=
|
||||||
|
|
||||||
|
ngx_long_regex_cont=$ngx_regex_cont
|
||||||
|
ngx_long_cont=$ngx_cont
|
||||||
|
|
||||||
|
. auto/cc/name
|
||||||
|
|
||||||
|
if test -n "$CFLAGS"; then
|
||||||
|
|
||||||
|
CC_TEST_FLAGS="$CFLAGS $NGX_CC_OPT"
|
||||||
|
|
||||||
|
case $NGX_CC_NAME in
|
||||||
|
|
||||||
|
ccc)
|
||||||
|
# Compaq C V6.5-207
|
||||||
|
|
||||||
|
ngx_include_opt="-I"
|
||||||
|
;;
|
||||||
|
|
||||||
|
sunc)
|
||||||
|
|
||||||
|
MAIN_LINK=
|
||||||
|
MODULE_LINK="-G"
|
||||||
|
|
||||||
|
case "$NGX_MACHINE" in
|
||||||
|
|
||||||
|
i86pc)
|
||||||
|
NGX_AUX=" src/os/unix/ngx_sunpro_x86.il"
|
||||||
|
;;
|
||||||
|
|
||||||
|
sun4u | sun4v)
|
||||||
|
NGX_AUX=" src/os/unix/ngx_sunpro_sparc64.il"
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
case $CPU in
|
||||||
|
|
||||||
|
amd64)
|
||||||
|
NGX_AUX=" src/os/unix/ngx_sunpro_amd64.il"
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
case $NGX_CC_NAME in
|
||||||
|
gcc)
|
||||||
|
# gcc 2.7.2.3, 2.8.1, 2.95.4, egcs-1.1.2
|
||||||
|
# 3.0.4, 3.1.1, 3.2.3, 3.3.2, 3.3.3, 3.3.4, 3.4.0, 3.4.2
|
||||||
|
# 4.0.0, 4.0.1, 4.1.0
|
||||||
|
|
||||||
|
. auto/cc/gcc
|
||||||
|
;;
|
||||||
|
|
||||||
|
clang)
|
||||||
|
# Clang C compiler
|
||||||
|
|
||||||
|
. auto/cc/clang
|
||||||
|
;;
|
||||||
|
|
||||||
|
icc)
|
||||||
|
# Intel C++ compiler 7.1, 8.0, 8.1
|
||||||
|
|
||||||
|
. auto/cc/icc
|
||||||
|
;;
|
||||||
|
|
||||||
|
sunc)
|
||||||
|
# Sun C 5.7 Patch 117837-04 2005/05/11
|
||||||
|
|
||||||
|
. auto/cc/sunc
|
||||||
|
;;
|
||||||
|
|
||||||
|
ccc)
|
||||||
|
# Compaq C V6.5-207
|
||||||
|
|
||||||
|
. auto/cc/ccc
|
||||||
|
;;
|
||||||
|
|
||||||
|
acc)
|
||||||
|
# aCC: HP ANSI C++ B3910B A.03.55.02
|
||||||
|
|
||||||
|
. auto/cc/acc
|
||||||
|
;;
|
||||||
|
|
||||||
|
msvc*)
|
||||||
|
# MSVC++ 6.0 SP2, MSVC++ Toolkit 2003
|
||||||
|
|
||||||
|
. auto/cc/msvc
|
||||||
|
;;
|
||||||
|
|
||||||
|
owc)
|
||||||
|
# Open Watcom C 1.0, 1.2
|
||||||
|
|
||||||
|
. auto/cc/owc
|
||||||
|
;;
|
||||||
|
|
||||||
|
bcc)
|
||||||
|
# Borland C++ 5.5
|
||||||
|
|
||||||
|
. auto/cc/bcc
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
CC_TEST_FLAGS="$CC_TEST_FLAGS $NGX_CC_OPT"
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
CFLAGS="$CFLAGS $NGX_CC_OPT"
|
||||||
|
NGX_TEST_LD_OPT="$NGX_LD_OPT"
|
||||||
|
|
||||||
|
if [ "$NGX_PLATFORM" != win32 ]; then
|
||||||
|
|
||||||
|
if test -n "$NGX_LD_OPT"; then
|
||||||
|
ngx_feature=--with-ld-opt=\"$NGX_LD_OPT\"
|
||||||
|
ngx_feature_name=
|
||||||
|
ngx_feature_run=no
|
||||||
|
ngx_feature_incs=
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=
|
||||||
|
ngx_feature_test=
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
echo $0: error: the invalid value in --with-ld-opt=\"$NGX_LD_OPT\"
|
||||||
|
echo
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
ngx_feature="-Wl,-E switch"
|
||||||
|
ngx_feature_name=
|
||||||
|
ngx_feature_run=no
|
||||||
|
ngx_feature_incs=
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=-Wl,-E
|
||||||
|
ngx_feature_test=
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
if [ $ngx_found = yes ]; then
|
||||||
|
MAIN_LINK="-Wl,-E"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ "$NGX_CC_NAME" = "sunc" ]; then
|
||||||
|
echo "checking for gcc builtin atomic operations ... disabled"
|
||||||
|
else
|
||||||
|
ngx_feature="gcc builtin atomic operations"
|
||||||
|
ngx_feature_name=NGX_HAVE_GCC_ATOMIC
|
||||||
|
ngx_feature_run=yes
|
||||||
|
ngx_feature_incs=
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=
|
||||||
|
ngx_feature_test="long n = 0;
|
||||||
|
if (!__sync_bool_compare_and_swap(&n, 0, 1))
|
||||||
|
return 1;
|
||||||
|
if (__sync_fetch_and_add(&n, 1) != 1)
|
||||||
|
return 1;
|
||||||
|
if (n != 2)
|
||||||
|
return 1;
|
||||||
|
__sync_synchronize();"
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ "$NGX_CC_NAME" = "ccc" ]; then
|
||||||
|
echo "checking for C99 variadic macros ... disabled"
|
||||||
|
else
|
||||||
|
ngx_feature="C99 variadic macros"
|
||||||
|
ngx_feature_name="NGX_HAVE_C99_VARIADIC_MACROS"
|
||||||
|
ngx_feature_run=yes
|
||||||
|
ngx_feature_incs="#include <stdio.h>
|
||||||
|
#define var(dummy, ...) sprintf(__VA_ARGS__)"
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=
|
||||||
|
ngx_feature_test="char buf[30]; buf[0] = '0';
|
||||||
|
var(0, buf, \"%d\", 1);
|
||||||
|
if (buf[0] != '1') return 1"
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
ngx_feature="gcc variadic macros"
|
||||||
|
ngx_feature_name="NGX_HAVE_GCC_VARIADIC_MACROS"
|
||||||
|
ngx_feature_run=yes
|
||||||
|
ngx_feature_incs="#include <stdio.h>
|
||||||
|
#define var(dummy, args...) sprintf(args)"
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=
|
||||||
|
ngx_feature_test="char buf[30]; buf[0] = '0';
|
||||||
|
var(0, buf, \"%d\", 1);
|
||||||
|
if (buf[0] != '1') return 1"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
|
||||||
|
ngx_feature="gcc builtin 64 bit byteswap"
|
||||||
|
ngx_feature_name="NGX_HAVE_GCC_BSWAP64"
|
||||||
|
ngx_feature_run=no
|
||||||
|
ngx_feature_incs=
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=
|
||||||
|
ngx_feature_test="if (__builtin_bswap64(0)) return 1"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
|
||||||
|
# ngx_feature="inline"
|
||||||
|
# ngx_feature_name=
|
||||||
|
# ngx_feature_run=no
|
||||||
|
# ngx_feature_incs="int inline f(void) { return 1 }"
|
||||||
|
# ngx_feature_path=
|
||||||
|
# ngx_feature_libs=
|
||||||
|
# ngx_feature_test=
|
||||||
|
# . auto/feature
|
||||||
|
#
|
||||||
|
# if [ $ngx_found = yes ]; then
|
||||||
|
# fi
|
||||||
|
|
||||||
|
fi
|
@ -0,0 +1,179 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
# gcc 2.7.2.3, 2.8.1, 2.95.4, egcs-1.1.2
|
||||||
|
# 3.0.4, 3.1.1, 3.2.3, 3.3.2, 3.3.3, 3.3.4, 3.4.0, 3.4.2
|
||||||
|
# 4.0.0, 4.0.1, 4.1.0
|
||||||
|
|
||||||
|
|
||||||
|
NGX_GCC_VER=`$CC -v 2>&1 | grep 'gcc version' 2>&1 \
|
||||||
|
| sed -e 's/^.* version \(.*\)/\1/'`
|
||||||
|
|
||||||
|
echo " + gcc version: $NGX_GCC_VER"
|
||||||
|
|
||||||
|
have=NGX_COMPILER value="\"gcc $NGX_GCC_VER\"" . auto/define
|
||||||
|
|
||||||
|
|
||||||
|
# Solaris 7's /usr/ccs/bin/as does not support "-pipe"
|
||||||
|
|
||||||
|
CC_TEST_FLAGS="-pipe"
|
||||||
|
|
||||||
|
ngx_feature="gcc -pipe switch"
|
||||||
|
ngx_feature_name=
|
||||||
|
ngx_feature_run=no
|
||||||
|
ngx_feature_incs=
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=
|
||||||
|
ngx_feature_test=
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
CC_TEST_FLAGS=
|
||||||
|
|
||||||
|
if [ $ngx_found = yes ]; then
|
||||||
|
PIPE="-pipe"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
case "$NGX_MACHINE" in
|
||||||
|
|
||||||
|
sun4u | sun4v | sparc | sparc64 )
|
||||||
|
# "-mcpu=v9" enables the "casa" assembler instruction
|
||||||
|
CFLAGS="$CFLAGS -mcpu=v9"
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
# optimizations
|
||||||
|
|
||||||
|
#NGX_GCC_OPT="-O2"
|
||||||
|
#NGX_GCC_OPT="-Os"
|
||||||
|
NGX_GCC_OPT="-O"
|
||||||
|
|
||||||
|
#CFLAGS="$CFLAGS -fomit-frame-pointer"
|
||||||
|
|
||||||
|
case $CPU in
|
||||||
|
pentium)
|
||||||
|
# optimize for Pentium and Athlon
|
||||||
|
CPU_OPT="-march=pentium"
|
||||||
|
NGX_CPU_CACHE_LINE=32
|
||||||
|
;;
|
||||||
|
|
||||||
|
pentiumpro | pentium3)
|
||||||
|
# optimize for Pentium Pro, Pentium II and Pentium III
|
||||||
|
CPU_OPT="-march=pentiumpro"
|
||||||
|
NGX_CPU_CACHE_LINE=32
|
||||||
|
;;
|
||||||
|
|
||||||
|
pentium4)
|
||||||
|
# optimize for Pentium 4, gcc 3.x
|
||||||
|
CPU_OPT="-march=pentium4"
|
||||||
|
NGX_CPU_CACHE_LINE=128
|
||||||
|
;;
|
||||||
|
|
||||||
|
athlon)
|
||||||
|
# optimize for Athlon, gcc 3.x
|
||||||
|
CPU_OPT="-march=athlon"
|
||||||
|
NGX_CPU_CACHE_LINE=64
|
||||||
|
;;
|
||||||
|
|
||||||
|
opteron)
|
||||||
|
# optimize for Opteron, gcc 3.x
|
||||||
|
CPU_OPT="-march=opteron"
|
||||||
|
NGX_CPU_CACHE_LINE=64
|
||||||
|
;;
|
||||||
|
|
||||||
|
sparc32)
|
||||||
|
# build 32-bit UltraSparc binary
|
||||||
|
CPU_OPT="-m32"
|
||||||
|
CORE_LINK="$CORE_LINK -m32"
|
||||||
|
NGX_CPU_CACHE_LINE=64
|
||||||
|
;;
|
||||||
|
|
||||||
|
sparc64)
|
||||||
|
# build 64-bit UltraSparc binary
|
||||||
|
CPU_OPT="-m64"
|
||||||
|
CORE_LINK="$CORE_LINK -m64"
|
||||||
|
NGX_CPU_CACHE_LINE=64
|
||||||
|
;;
|
||||||
|
|
||||||
|
ppc64)
|
||||||
|
# build 64-bit PowerPC binary
|
||||||
|
CPU_OPT="-m64"
|
||||||
|
CPU_OPT="$CPU_OPT -falign-functions=32 -falign-labels=32"
|
||||||
|
CPU_OPT="$CPU_OPT -falign-loops=32 -falign-jumps=32"
|
||||||
|
CORE_LINK="$CORE_LINK -m64"
|
||||||
|
NGX_CPU_CACHE_LINE=128
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
CC_AUX_FLAGS="$CC_AUX_FLAGS $CPU_OPT"
|
||||||
|
|
||||||
|
case "$NGX_GCC_VER" in
|
||||||
|
2.7*)
|
||||||
|
# batch build
|
||||||
|
CPU_OPT=
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
CFLAGS="$CFLAGS $PIPE $CPU_OPT"
|
||||||
|
|
||||||
|
if [ ".$PCRE_OPT" = "." ]; then
|
||||||
|
PCRE_OPT="-O2 -fomit-frame-pointer $PIPE $CPU_OPT"
|
||||||
|
else
|
||||||
|
PCRE_OPT="$PCRE_OPT $PIPE"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ".$ZLIB_OPT" = "." ]; then
|
||||||
|
ZLIB_OPT="-O2 -fomit-frame-pointer $PIPE $CPU_OPT"
|
||||||
|
else
|
||||||
|
ZLIB_OPT="$ZLIB_OPT $PIPE"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# warnings
|
||||||
|
|
||||||
|
# -W requires at least -O
|
||||||
|
CFLAGS="$CFLAGS ${NGX_GCC_OPT:--O} -W"
|
||||||
|
|
||||||
|
CFLAGS="$CFLAGS -Wall -Wpointer-arith"
|
||||||
|
#CFLAGS="$CFLAGS -Wconversion"
|
||||||
|
#CFLAGS="$CFLAGS -Winline"
|
||||||
|
#CFLAGS="$CFLAGS -Wmissing-prototypes"
|
||||||
|
|
||||||
|
case "$NGX_GCC_VER" in
|
||||||
|
2.*)
|
||||||
|
# we have a lot of the unused function arguments
|
||||||
|
CFLAGS="$CFLAGS -Wno-unused"
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
# we have a lot of the unused function arguments
|
||||||
|
CFLAGS="$CFLAGS -Wno-unused-parameter"
|
||||||
|
# 4.2.1 shows the warning in wrong places
|
||||||
|
#CFLAGS="$CFLAGS -Wunreachable-code"
|
||||||
|
|
||||||
|
# deprecated system OpenSSL library on OS X
|
||||||
|
if [ "$NGX_SYSTEM" = "Darwin" ]; then
|
||||||
|
CFLAGS="$CFLAGS -Wno-deprecated-declarations"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
# stop on warning
|
||||||
|
CFLAGS="$CFLAGS -Werror"
|
||||||
|
|
||||||
|
# debug
|
||||||
|
CFLAGS="$CFLAGS -g"
|
||||||
|
|
||||||
|
# DragonFly's gcc3 generates DWARF
|
||||||
|
#CFLAGS="$CFLAGS -g -gstabs"
|
||||||
|
|
||||||
|
if [ ".$CPP" = "." ]; then
|
||||||
|
CPP="$CC -E"
|
||||||
|
fi
|
@ -0,0 +1,117 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
# Intel C++ compiler 7.1, 8.0, 8.1, 9.0, 11.1
|
||||||
|
|
||||||
|
NGX_ICC_VER=`$CC -V 2>&1 | grep 'Version' 2>&1 \
|
||||||
|
| sed -e 's/^.* Version \([^ ]*\) *Build.*$/\1/'`
|
||||||
|
|
||||||
|
echo " + icc version: $NGX_ICC_VER"
|
||||||
|
|
||||||
|
have=NGX_COMPILER value="\"Intel C Compiler $NGX_ICC_VER\"" . auto/define
|
||||||
|
|
||||||
|
|
||||||
|
# optimizations
|
||||||
|
|
||||||
|
CFLAGS="$CFLAGS -O"
|
||||||
|
|
||||||
|
CORE_LINK="$CORE_LINK -opt_report_file=$NGX_OBJS/opt_report_file"
|
||||||
|
|
||||||
|
|
||||||
|
case $CPU in
|
||||||
|
pentium)
|
||||||
|
# optimize for Pentium and Athlon
|
||||||
|
CPU_OPT="-march=pentium"
|
||||||
|
;;
|
||||||
|
|
||||||
|
pentiumpro)
|
||||||
|
# optimize for Pentium Pro, Pentium II and Pentium III
|
||||||
|
CPU_OPT="-mcpu=pentiumpro -march=pentiumpro"
|
||||||
|
;;
|
||||||
|
|
||||||
|
pentium4)
|
||||||
|
# optimize for Pentium 4, default
|
||||||
|
CPU_OPT="-march=pentium4"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
CFLAGS="$CFLAGS $CPU_OPT"
|
||||||
|
|
||||||
|
if [ ".$PCRE_OPT" = "." ]; then
|
||||||
|
PCRE_OPT="-O $CPU_OPT"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ".$ZLIB_OPT" = "." ]; then
|
||||||
|
ZLIB_OPT="-O $CPU_OPT"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# warnings
|
||||||
|
|
||||||
|
CFLAGS="$CFLAGS -w2"
|
||||||
|
|
||||||
|
# disable some warnings
|
||||||
|
|
||||||
|
# invalid type conversion: "int" to "char *"
|
||||||
|
CFLAGS="$CFLAGS -wd171"
|
||||||
|
# argument is incompatible with corresponding format string conversion
|
||||||
|
CFLAGS="$CFLAGS -wd181"
|
||||||
|
# zero used for undefined preprocessing identifier
|
||||||
|
CFLAGS="$CFLAGS -wd193"
|
||||||
|
# the format string ends before this argument
|
||||||
|
CFLAGS="$CFLAGS -wd268"
|
||||||
|
# invalid format string conversion
|
||||||
|
CFLAGS="$CFLAGS -wd269"
|
||||||
|
# conversion from "long long" to "size_t" may lose significant bits
|
||||||
|
CFLAGS="$CFLAGS -wd810"
|
||||||
|
# parameter was never referenced
|
||||||
|
CFLAGS="$CFLAGS -wd869"
|
||||||
|
# attribute "unused" is only allowed in a function definition, warning on pTHX_
|
||||||
|
CFLAGS="$CFLAGS -wd1301"
|
||||||
|
|
||||||
|
# STUB
|
||||||
|
# enumerated type mixed with another type
|
||||||
|
CFLAGS="$CFLAGS -wd188"
|
||||||
|
# controlling expression is constant
|
||||||
|
CFLAGS="$CFLAGS -wd279"
|
||||||
|
# operands are evaluated in unspecified order
|
||||||
|
CFLAGS="$CFLAGS -wd981"
|
||||||
|
# external definition with no prior declaration
|
||||||
|
CFLAGS="$CFLAGS -wd1418"
|
||||||
|
# external declaration in primary source file
|
||||||
|
CFLAGS="$CFLAGS -wd1419"
|
||||||
|
|
||||||
|
case "$NGX_ICC_VER" in
|
||||||
|
9.*)
|
||||||
|
# "cc" clobber ignored, warnings for Linux's htonl()/htons()
|
||||||
|
CFLAGS="$CFLAGS -wd1469"
|
||||||
|
# explicit conversion of a 64-bit integral type to a smaller
|
||||||
|
# integral type
|
||||||
|
CFLAGS="$CFLAGS -wd1683"
|
||||||
|
# conversion from pointer to same-sized integral type,
|
||||||
|
# warning on offsetof()
|
||||||
|
CFLAGS="$CFLAGS -wd1684"
|
||||||
|
# floating-point equality and inequality comparisons are unreliable,
|
||||||
|
# warning on SvTRUE()
|
||||||
|
CFLAGS="$CFLAGS -wd1572"
|
||||||
|
;;
|
||||||
|
|
||||||
|
8.*)
|
||||||
|
# "cc" clobber ignored, warnings for Linux's htonl()/htons()
|
||||||
|
CFLAGS="$CFLAGS -wd1469"
|
||||||
|
# floating-point equality and inequality comparisons are unreliable,
|
||||||
|
# warning on SvTRUE()
|
||||||
|
CFLAGS="$CFLAGS -wd1572"
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# stop on warning
|
||||||
|
CFLAGS="$CFLAGS -Werror"
|
||||||
|
|
||||||
|
# debug
|
||||||
|
CFLAGS="$CFLAGS -g"
|
@ -0,0 +1,156 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
# MSVC 6.0 SP2 cl 12.00
|
||||||
|
# MSVC Toolkit 2003 (7.1) cl 13.10
|
||||||
|
# MSVC 2005 Express Edition SP1 (8.0) cl 14.00
|
||||||
|
# MSVC 2008 Express Edition (9.0) cl 15.00
|
||||||
|
# MSVC 2010 (10.0) cl 16.00
|
||||||
|
# MSVC 2015 (14.0) cl 19.00
|
||||||
|
|
||||||
|
|
||||||
|
NGX_MSVC_VER=`$NGX_WINE $CC 2>&1 | grep 'Compiler Version' 2>&1 \
|
||||||
|
| sed -e 's/^.* Version \(.*\)/\1/'`
|
||||||
|
|
||||||
|
echo " + cl version: $NGX_MSVC_VER"
|
||||||
|
|
||||||
|
have=NGX_COMPILER value="\"cl $NGX_MSVC_VER\"" . auto/define
|
||||||
|
|
||||||
|
|
||||||
|
ngx_msvc_ver=`echo $NGX_MSVC_VER | sed -e 's/^\([0-9]*\).*/\1/'`
|
||||||
|
|
||||||
|
|
||||||
|
# optimizations
|
||||||
|
|
||||||
|
# maximize speed, equivalent to -Og -Oi -Ot -Oy -Ob2 -Gs -GF -Gy
|
||||||
|
CFLAGS="$CFLAGS -O2"
|
||||||
|
|
||||||
|
# enable global optimization
|
||||||
|
#CFLAGS="$CFLAGS -Og"
|
||||||
|
# enable intrinsic functions
|
||||||
|
#CFLAGS="$CFLAGS -Oi"
|
||||||
|
|
||||||
|
# disable inline expansion
|
||||||
|
#CFLAGS="$CFLAGS -Ob0"
|
||||||
|
# explicit inline expansion
|
||||||
|
#CFLAGS="$CFLAGS -Ob1"
|
||||||
|
# explicit and implicit inline expansion
|
||||||
|
#CFLAGS="$CFLAGS -Ob2"
|
||||||
|
|
||||||
|
# enable frame pointer omission
|
||||||
|
#CFLAGS="$CFLAGS -Oy"
|
||||||
|
# disable stack checking calls
|
||||||
|
#CFLAGS="$CFLAGS -Gs"
|
||||||
|
|
||||||
|
# pools strings as read/write
|
||||||
|
#CFLAGS="$CFLAGS -Gf"
|
||||||
|
# pools strings as read-only
|
||||||
|
#CFLAGS="$CFLAGS -GF"
|
||||||
|
|
||||||
|
|
||||||
|
case $CPU in
|
||||||
|
pentium)
|
||||||
|
# optimize for Pentium and Athlon
|
||||||
|
CPU_OPT="-G5"
|
||||||
|
;;
|
||||||
|
|
||||||
|
pentiumpro)
|
||||||
|
# optimize for Pentium Pro, Pentium II and Pentium III
|
||||||
|
CPU_OPT="-G6"
|
||||||
|
;;
|
||||||
|
|
||||||
|
pentium4)
|
||||||
|
# optimize for Pentium 4, MSVC 7
|
||||||
|
CPU_OPT="-G7"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# __cdecl, default, must be used with OpenSSL, md5 asm, and sha1 asm
|
||||||
|
#CPU_OPT="$CPU_OPT -Gd"
|
||||||
|
# __stdcall
|
||||||
|
#CPU_OPT="$CPU_OPT -Gz"
|
||||||
|
# __fastcall
|
||||||
|
#CPU_OPT="$CPU_OPT -Gr"
|
||||||
|
|
||||||
|
|
||||||
|
CFLAGS="$CFLAGS $CPU_OPT"
|
||||||
|
|
||||||
|
|
||||||
|
# warnings
|
||||||
|
|
||||||
|
CFLAGS="$CFLAGS -W4"
|
||||||
|
|
||||||
|
# stop on warning
|
||||||
|
CFLAGS="$CFLAGS -WX"
|
||||||
|
|
||||||
|
# disable logo
|
||||||
|
CFLAGS="$CFLAGS -nologo"
|
||||||
|
|
||||||
|
# the link flags
|
||||||
|
CORE_LINK="$CORE_LINK -link -verbose:lib"
|
||||||
|
|
||||||
|
# link with libcmt.lib, multithreaded
|
||||||
|
LIBC="-MT"
|
||||||
|
# link with msvcrt.dll
|
||||||
|
# however, MSVC Toolkit 2003 has no MSVCRT.LIB
|
||||||
|
#LIBC="-MD"
|
||||||
|
|
||||||
|
CFLAGS="$CFLAGS $LIBC"
|
||||||
|
|
||||||
|
CORE_LIBS="$CORE_LIBS kernel32.lib user32.lib"
|
||||||
|
|
||||||
|
# Win32 GUI mode application
|
||||||
|
#CORE_LINK="$CORE_LINK -subsystem:windows -entry:mainCRTStartup"
|
||||||
|
|
||||||
|
# debug
|
||||||
|
# msvc under Wine issues
|
||||||
|
# C1902: Program database manager mismatch; please check your installation
|
||||||
|
if [ -z "$NGX_WINE" ]; then
|
||||||
|
CFLAGS="$CFLAGS -Zi -Fd$NGX_OBJS/nginx.pdb"
|
||||||
|
CORE_LINK="$CORE_LINK -debug"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# MSVC 2005 supports C99 variadic macros
|
||||||
|
if [ "$ngx_msvc_ver" -ge 14 ]; then
|
||||||
|
have=NGX_HAVE_C99_VARIADIC_MACROS . auto/have
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# precompiled headers
|
||||||
|
CORE_DEPS="$CORE_DEPS $NGX_OBJS/ngx_config.pch"
|
||||||
|
CORE_LINK="$CORE_LINK $NGX_OBJS/ngx_pch.obj"
|
||||||
|
NGX_PCH="$NGX_OBJS/ngx_config.pch"
|
||||||
|
NGX_BUILD_PCH="-Ycngx_config.h -Fp$NGX_OBJS/ngx_config.pch"
|
||||||
|
NGX_USE_PCH="-Yungx_config.h -Fp$NGX_OBJS/ngx_config.pch"
|
||||||
|
|
||||||
|
|
||||||
|
# the resource file
|
||||||
|
NGX_RES="$NGX_OBJS/nginx.res"
|
||||||
|
NGX_RCC="rc -fo$NGX_RES \$(CORE_INCS) $NGX_WIN32_RC"
|
||||||
|
CORE_LINK="$NGX_RES $CORE_LINK"
|
||||||
|
|
||||||
|
|
||||||
|
# dynamic modules
|
||||||
|
#MAIN_LINK="-link -def:$NGX_OBJS/nginx.def"
|
||||||
|
#MODULE_LINK="-LD $NGX_OBJS/nginx.lib"
|
||||||
|
|
||||||
|
|
||||||
|
ngx_pic_opt=
|
||||||
|
ngx_objout="-Fo"
|
||||||
|
ngx_binout="-Fe"
|
||||||
|
ngx_objext="obj"
|
||||||
|
|
||||||
|
ngx_long_start='@<<
|
||||||
|
'
|
||||||
|
ngx_long_end='<<'
|
||||||
|
ngx_long_regex_cont=' \
|
||||||
|
'
|
||||||
|
ngx_long_cont='
|
||||||
|
'
|
||||||
|
|
||||||
|
# MSVC understand / in path
|
||||||
|
#ngx_regex_dirsep='\\'
|
||||||
|
#ngx_dirsep="\\"
|
@ -0,0 +1,70 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
if [ "$NGX_PLATFORM" != win32 ]; then
|
||||||
|
|
||||||
|
ngx_feature="C compiler"
|
||||||
|
ngx_feature_name=
|
||||||
|
ngx_feature_run=yes
|
||||||
|
ngx_feature_incs=
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=
|
||||||
|
ngx_feature_test=
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
echo
|
||||||
|
echo $0: error: C compiler $CC is not found
|
||||||
|
echo
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ "$CC" = cl ]; then
|
||||||
|
NGX_CC_NAME=msvc
|
||||||
|
echo " + using Microsoft Visual C++ compiler"
|
||||||
|
|
||||||
|
elif [ "$CC" = wcl386 ]; then
|
||||||
|
NGX_CC_NAME=owc
|
||||||
|
echo " + using Open Watcom C compiler"
|
||||||
|
|
||||||
|
elif [ "$CC" = bcc32 ]; then
|
||||||
|
NGX_CC_NAME=bcc
|
||||||
|
echo " + using Borland C++ compiler"
|
||||||
|
|
||||||
|
elif `$CC -V 2>&1 | grep '^Intel(R) C' >/dev/null 2>&1`; then
|
||||||
|
NGX_CC_NAME=icc
|
||||||
|
echo " + using Intel C++ compiler"
|
||||||
|
|
||||||
|
elif `$CC -v 2>&1 | grep 'gcc version' >/dev/null 2>&1`; then
|
||||||
|
NGX_CC_NAME=gcc
|
||||||
|
echo " + using GNU C compiler"
|
||||||
|
|
||||||
|
elif `$CC -v 2>&1 | grep 'clang version' >/dev/null 2>&1`; then
|
||||||
|
NGX_CC_NAME=clang
|
||||||
|
echo " + using Clang C compiler"
|
||||||
|
|
||||||
|
elif `$CC -v 2>&1 | grep 'LLVM version' >/dev/null 2>&1`; then
|
||||||
|
NGX_CC_NAME=clang
|
||||||
|
echo " + using Clang C compiler"
|
||||||
|
|
||||||
|
elif `$CC -V 2>&1 | grep 'Sun C' >/dev/null 2>&1`; then
|
||||||
|
NGX_CC_NAME=sunc
|
||||||
|
echo " + using Sun C compiler"
|
||||||
|
|
||||||
|
elif `$CC -V 2>&1 | grep '^Compaq C' >/dev/null 2>&1`; then
|
||||||
|
NGX_CC_NAME=ccc
|
||||||
|
echo " + using Compaq C compiler"
|
||||||
|
|
||||||
|
elif `$CC -V 2>&1 | grep '^aCC: ' >/dev/null 2>&1`; then
|
||||||
|
NGX_CC_NAME=acc
|
||||||
|
echo " + using HP aC++ compiler"
|
||||||
|
|
||||||
|
else
|
||||||
|
NGX_CC_NAME=unknown
|
||||||
|
|
||||||
|
fi
|
@ -0,0 +1,103 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
# Open Watcom C 1.0, 1.2, 1.3
|
||||||
|
|
||||||
|
# optimizations
|
||||||
|
|
||||||
|
# maximize speed
|
||||||
|
CFLAGS="$CFLAGS -ot"
|
||||||
|
# reorder instructions for best pipeline usage
|
||||||
|
CFLAGS="$CFLAGS -op"
|
||||||
|
# inline intrinsic functions
|
||||||
|
CFLAGS="$CFLAGS -oi"
|
||||||
|
# inline expansion
|
||||||
|
CFLAGS="$CFLAGS -oe"
|
||||||
|
# disable stack checking calls
|
||||||
|
CFLAGS="$CFLAGS -s"
|
||||||
|
|
||||||
|
case $CPU in
|
||||||
|
pentium)
|
||||||
|
# optimize for Pentium and Athlon
|
||||||
|
# register-based arguments passing conventions
|
||||||
|
CPU_OPT="-5r"
|
||||||
|
# stack-based arguments passing conventions
|
||||||
|
#CPU_OPT="-5s"
|
||||||
|
;;
|
||||||
|
|
||||||
|
pentiumpro)
|
||||||
|
# optimize for Pentium Pro, Pentium II and Pentium III
|
||||||
|
# register-based arguments passing conventions
|
||||||
|
CPU_OPT="-6r"
|
||||||
|
# stack-based arguments passing conventions
|
||||||
|
#CPU_OPT="-6s"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
CFLAGS="$CFLAGS $CPU_OPT"
|
||||||
|
|
||||||
|
|
||||||
|
# warnings
|
||||||
|
|
||||||
|
# maximum level
|
||||||
|
CFLAGS="$CFLAGS -wx"
|
||||||
|
#CFLAGS="$CFLAGS -w3"
|
||||||
|
|
||||||
|
# stop on warning
|
||||||
|
CFLAGS="$CFLAGS -we"
|
||||||
|
|
||||||
|
# built target is NT
|
||||||
|
CFLAGS="$CFLAGS -bt=nt"
|
||||||
|
|
||||||
|
# multithreaded
|
||||||
|
CFLAGS="$CFLAGS -bm"
|
||||||
|
|
||||||
|
# debug
|
||||||
|
CFLAGS="$CFLAGS -d2"
|
||||||
|
|
||||||
|
# quiet
|
||||||
|
CFLAGS="$CFLAGS -zq"
|
||||||
|
|
||||||
|
# Open Watcom C 1.2
|
||||||
|
have=NGX_HAVE_C99_VARIADIC_MACROS . auto/have
|
||||||
|
|
||||||
|
|
||||||
|
# the precompiled headers
|
||||||
|
#CORE_DEPS="$CORE_DEPS $NGX_OBJS/ngx_config.pch"
|
||||||
|
#NGX_PCH="$NGX_OBJS/ngx_config.pch"
|
||||||
|
#NGX_BUILD_PCH="-fhq=$NGX_OBJS/ngx_config.pch"
|
||||||
|
#NGX_USE_PCH="-fh=$NGX_OBJS/ngx_config.pch"
|
||||||
|
|
||||||
|
|
||||||
|
# the link flags, built target is NT GUI mode application
|
||||||
|
#CORE_LINK="$CORE_LINK -l=nt_win"
|
||||||
|
|
||||||
|
|
||||||
|
# the resource file
|
||||||
|
NGX_RCC="wrc \$(CORE_INCS) -fo=$NGX_OBJS/nginx.res "
|
||||||
|
NGX_RCC="$NGX_RCC $NGX_WIN32_RC $NGX_OBJS/nginx.exe"
|
||||||
|
|
||||||
|
|
||||||
|
ngx_include_opt="-i="
|
||||||
|
ngx_objout="-fo"
|
||||||
|
ngx_binout="-fe="
|
||||||
|
ngx_objext="obj"
|
||||||
|
|
||||||
|
ngx_regex_dirsep='\\'
|
||||||
|
ngx_dirsep="\\"
|
||||||
|
|
||||||
|
ngx_long_start=' '
|
||||||
|
ngx_long_end=' '
|
||||||
|
ngx_long_regex_cont=' \&\
|
||||||
|
'
|
||||||
|
ngx_long_cont=' &
|
||||||
|
'
|
||||||
|
|
||||||
|
ngx_regex_cont=' \&\
|
||||||
|
'
|
||||||
|
ngx_cont=' &
|
||||||
|
'
|
||||||
|
ngx_tab=' &
|
||||||
|
'
|
@ -0,0 +1,163 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
# Sun C 5.7 Patch 117837-04 2005/05/11 Sun Studio 10
|
||||||
|
# Sun C 5.8 2005/10/13 Sun Studio 11
|
||||||
|
# Sun C 5.9 SunOS_i386 2007/05/03 Sun Studio 12
|
||||||
|
# Sun C 5.9 SunOS_sparc 2007/05/03
|
||||||
|
# Sun C 5.10 SunOS_i386 2009/06/03 Sun Studio 12.1
|
||||||
|
# Sun C 5.11 SunOS_i386 2010/08/13 Oracle Solaris Studio 12.2
|
||||||
|
# Sun C 5.12 SunOS_i386 2011/11/16 Oracle Solaris Studio 12.3
|
||||||
|
# Sun C 5.13 SunOS_i386 2014/10/20 Oracle Solaris Studio 12.4
|
||||||
|
# Sun C 5.14 SunOS_i386 2016/05/31 Oracle Developer Studio 12.5
|
||||||
|
|
||||||
|
NGX_SUNC_VER=`$CC -V 2>&1 | grep 'Sun C' 2>&1 \
|
||||||
|
| sed -e 's/^.* Sun C \(.*\)/\1/'`
|
||||||
|
|
||||||
|
echo " + Sun C version: $NGX_SUNC_VER"
|
||||||
|
|
||||||
|
have=NGX_COMPILER value="\"Sun C $NGX_SUNC_VER\"" . auto/define
|
||||||
|
|
||||||
|
|
||||||
|
cat << END > $NGX_AUTOTEST.c
|
||||||
|
|
||||||
|
int main(void) {
|
||||||
|
printf("%d", __SUNPRO_C);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
eval "$CC -o $NGX_AUTOTEST $NGX_AUTOTEST.c >> $NGX_ERR 2>&1"
|
||||||
|
|
||||||
|
if [ -x $NGX_AUTOTEST ]; then
|
||||||
|
ngx_sunc_ver=`$NGX_AUTOTEST`
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -rf $NGX_AUTOTEST*
|
||||||
|
|
||||||
|
# 1424 == 0x590, Sun Studio 12
|
||||||
|
|
||||||
|
if [ "$ngx_sunc_ver" -ge 1424 ]; then
|
||||||
|
ngx_sparc32="-m32"
|
||||||
|
ngx_sparc64="-m64"
|
||||||
|
ngx_amd64="-m64"
|
||||||
|
|
||||||
|
else
|
||||||
|
ngx_sparc32="-xarch=v8plus"
|
||||||
|
ngx_sparc64="-xarch=v9"
|
||||||
|
ngx_amd64="-xarch=amd64"
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$NGX_MACHINE" in
|
||||||
|
|
||||||
|
i86pc)
|
||||||
|
NGX_AUX=" src/os/unix/ngx_sunpro_x86.il"
|
||||||
|
;;
|
||||||
|
|
||||||
|
sun4u | sun4v)
|
||||||
|
NGX_AUX=" src/os/unix/ngx_sunpro_sparc64.il"
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
MAIN_LINK=
|
||||||
|
MODULE_LINK="-G"
|
||||||
|
|
||||||
|
|
||||||
|
# optimizations
|
||||||
|
|
||||||
|
# 20736 == 0x5100, Sun Studio 12.1
|
||||||
|
|
||||||
|
if [ "$ngx_sunc_ver" -ge 20736 ]; then
|
||||||
|
ngx_fast="-fast"
|
||||||
|
|
||||||
|
else
|
||||||
|
# older versions had problems with bit-fields
|
||||||
|
ngx_fast="-fast -xalias_level=any"
|
||||||
|
fi
|
||||||
|
|
||||||
|
IPO=-xipo
|
||||||
|
CFLAGS="$CFLAGS $ngx_fast $IPO"
|
||||||
|
CORE_LINK="$CORE_LINK $ngx_fast $IPO"
|
||||||
|
|
||||||
|
|
||||||
|
case $CPU in
|
||||||
|
pentium)
|
||||||
|
# optimize for Pentium and Athlon
|
||||||
|
CPU_OPT="-xchip=pentium"
|
||||||
|
;;
|
||||||
|
|
||||||
|
pentiumpro)
|
||||||
|
# optimize for Pentium Pro, Pentium II
|
||||||
|
CPU_OPT="-xchip=pentium_pro"
|
||||||
|
;;
|
||||||
|
|
||||||
|
pentium3)
|
||||||
|
# optimize for Pentium III
|
||||||
|
CPU_OPT="-xchip=pentium3"
|
||||||
|
#CPU_OPT="$CPU_OPT -xarch=sse"
|
||||||
|
CPU_OPT="$CPU_OPT -xcache=16/32/4:256/32/4"
|
||||||
|
;;
|
||||||
|
|
||||||
|
pentium4)
|
||||||
|
# optimize for Pentium 4
|
||||||
|
CPU_OPT="-xchip=pentium4"
|
||||||
|
#CPU_OPT="$CPU_OPT -xarch=sse2"
|
||||||
|
CPU_OPT="$CPU_OPT -xcache=8/64/4:256/128/8"
|
||||||
|
;;
|
||||||
|
|
||||||
|
opteron)
|
||||||
|
# optimize for Opteron
|
||||||
|
CPU_OPT="-xchip=opteron"
|
||||||
|
#CPU_OPT="$CPU_OPT -xarch=sse2"
|
||||||
|
CPU_OPT="$CPU_OPT -xcache=64/64/2:1024/64/16"
|
||||||
|
;;
|
||||||
|
|
||||||
|
sparc32)
|
||||||
|
# build 32-bit UltraSparc binary
|
||||||
|
CPU_OPT="$ngx_sparc32"
|
||||||
|
CORE_LINK="$CORE_LINK $ngx_sparc32"
|
||||||
|
CC_AUX_FLAGS="$CC_AUX_FLAGS $ngx_sparc32"
|
||||||
|
NGX_CPU_CACHE_LINE=64
|
||||||
|
;;
|
||||||
|
|
||||||
|
sparc64)
|
||||||
|
# build 64-bit UltraSparc binary
|
||||||
|
CPU_OPT="$ngx_sparc64"
|
||||||
|
CORE_LINK="$CORE_LINK $ngx_sparc64"
|
||||||
|
CC_AUX_FLAGS="$CC_AUX_FLAGS $ngx_sparc64"
|
||||||
|
NGX_CPU_CACHE_LINE=64
|
||||||
|
;;
|
||||||
|
|
||||||
|
amd64)
|
||||||
|
# build 64-bit amd64 binary
|
||||||
|
CPU_OPT="$ngx_amd64"
|
||||||
|
CORE_LINK="$CORE_LINK $ngx_amd64"
|
||||||
|
CC_AUX_FLAGS="$CC_AUX_FLAGS $ngx_amd64"
|
||||||
|
NGX_AUX=" src/os/unix/ngx_sunpro_amd64.il"
|
||||||
|
NGX_CPU_CACHE_LINE=64
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
CFLAGS="$CFLAGS $CPU_OPT"
|
||||||
|
|
||||||
|
|
||||||
|
if [ ".$PCRE_OPT" = "." ]; then
|
||||||
|
PCRE_OPT="$ngx_fast $IPO $CPU_OPT"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ".$ZLIB_OPT" = "." ]; then
|
||||||
|
ZLIB_OPT="$ngx_fast $IPO $CPU_OPT"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# stop on warning
|
||||||
|
CFLAGS="$CFLAGS -errwarn=%all"
|
||||||
|
|
||||||
|
# debug
|
||||||
|
CFLAGS="$CFLAGS -g"
|
@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
cat << END >> $NGX_AUTO_CONFIG_H
|
||||||
|
|
||||||
|
#ifndef $have
|
||||||
|
#define $have $value
|
||||||
|
#endif
|
||||||
|
|
||||||
|
END
|
@ -0,0 +1,50 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
echo $ngx_n "checking for system byte ordering ...$ngx_c"
|
||||||
|
|
||||||
|
cat << END >> $NGX_AUTOCONF_ERR
|
||||||
|
|
||||||
|
----------------------------------------
|
||||||
|
checking for system byte ordering
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
|
cat << END > $NGX_AUTOTEST.c
|
||||||
|
|
||||||
|
int main(void) {
|
||||||
|
int i = 0x11223344;
|
||||||
|
char *p;
|
||||||
|
|
||||||
|
p = (char *) &i;
|
||||||
|
if (*p == 0x44) return 0;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
ngx_test="$CC $CC_TEST_FLAGS $CC_AUX_FLAGS \
|
||||||
|
-o $NGX_AUTOTEST $NGX_AUTOTEST.c $NGX_LD_OPT $ngx_feature_libs"
|
||||||
|
|
||||||
|
eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&1"
|
||||||
|
|
||||||
|
if [ -x $NGX_AUTOTEST ]; then
|
||||||
|
if $NGX_AUTOTEST >/dev/null 2>&1; then
|
||||||
|
echo " little endian"
|
||||||
|
have=NGX_HAVE_LITTLE_ENDIAN . auto/have
|
||||||
|
else
|
||||||
|
echo " big endian"
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -rf $NGX_AUTOTEST*
|
||||||
|
|
||||||
|
else
|
||||||
|
rm -rf $NGX_AUTOTEST*
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "$0: error: cannot detect system byte ordering"
|
||||||
|
exit 1
|
||||||
|
fi
|
@ -0,0 +1,123 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
echo $ngx_n "checking for $ngx_feature ...$ngx_c"
|
||||||
|
|
||||||
|
cat << END >> $NGX_AUTOCONF_ERR
|
||||||
|
|
||||||
|
----------------------------------------
|
||||||
|
checking for $ngx_feature
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
ngx_found=no
|
||||||
|
|
||||||
|
if test -n "$ngx_feature_name"; then
|
||||||
|
ngx_have_feature=`echo $ngx_feature_name \
|
||||||
|
| tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ`
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -n "$ngx_feature_path"; then
|
||||||
|
for ngx_temp in $ngx_feature_path; do
|
||||||
|
ngx_feature_inc_path="$ngx_feature_inc_path -I $ngx_temp"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat << END > $NGX_AUTOTEST.c
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
$NGX_INCLUDE_UNISTD_H
|
||||||
|
$ngx_feature_incs
|
||||||
|
|
||||||
|
int main(void) {
|
||||||
|
$ngx_feature_test;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
|
ngx_test="$CC $CC_TEST_FLAGS $CC_AUX_FLAGS $ngx_feature_inc_path \
|
||||||
|
-o $NGX_AUTOTEST $NGX_AUTOTEST.c $NGX_TEST_LD_OPT $ngx_feature_libs"
|
||||||
|
|
||||||
|
ngx_feature_inc_path=
|
||||||
|
|
||||||
|
eval "/bin/sh -c \"$ngx_test\" >> $NGX_AUTOCONF_ERR 2>&1"
|
||||||
|
|
||||||
|
|
||||||
|
if [ -x $NGX_AUTOTEST ]; then
|
||||||
|
|
||||||
|
case "$ngx_feature_run" in
|
||||||
|
|
||||||
|
yes)
|
||||||
|
# /bin/sh is used to intercept "Killed" or "Abort trap" messages
|
||||||
|
if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then
|
||||||
|
echo " found"
|
||||||
|
ngx_found=yes
|
||||||
|
|
||||||
|
if test -n "$ngx_feature_name"; then
|
||||||
|
have=$ngx_have_feature . auto/have
|
||||||
|
fi
|
||||||
|
|
||||||
|
else
|
||||||
|
echo " found but is not working"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
value)
|
||||||
|
# /bin/sh is used to intercept "Killed" or "Abort trap" messages
|
||||||
|
if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then
|
||||||
|
echo " found"
|
||||||
|
ngx_found=yes
|
||||||
|
|
||||||
|
cat << END >> $NGX_AUTO_CONFIG_H
|
||||||
|
|
||||||
|
#ifndef $ngx_feature_name
|
||||||
|
#define $ngx_feature_name `$NGX_AUTOTEST`
|
||||||
|
#endif
|
||||||
|
|
||||||
|
END
|
||||||
|
else
|
||||||
|
echo " found but is not working"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
bug)
|
||||||
|
# /bin/sh is used to intercept "Killed" or "Abort trap" messages
|
||||||
|
if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then
|
||||||
|
echo " not found"
|
||||||
|
|
||||||
|
else
|
||||||
|
echo " found"
|
||||||
|
ngx_found=yes
|
||||||
|
|
||||||
|
if test -n "$ngx_feature_name"; then
|
||||||
|
have=$ngx_have_feature . auto/have
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo " found"
|
||||||
|
ngx_found=yes
|
||||||
|
|
||||||
|
if test -n "$ngx_feature_name"; then
|
||||||
|
have=$ngx_have_feature . auto/have
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
else
|
||||||
|
echo " not found"
|
||||||
|
|
||||||
|
echo "----------" >> $NGX_AUTOCONF_ERR
|
||||||
|
cat $NGX_AUTOTEST.c >> $NGX_AUTOCONF_ERR
|
||||||
|
echo "----------" >> $NGX_AUTOCONF_ERR
|
||||||
|
echo $ngx_test >> $NGX_AUTOCONF_ERR
|
||||||
|
echo "----------" >> $NGX_AUTOCONF_ERR
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -rf $NGX_AUTOTEST*
|
@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
cat << END >> $NGX_AUTO_CONFIG_H
|
||||||
|
|
||||||
|
#ifndef $have
|
||||||
|
#define $have 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
END
|
@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
cat << END >> $NGX_AUTO_HEADERS_H
|
||||||
|
|
||||||
|
#ifndef $have
|
||||||
|
#define $have 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
END
|
@ -0,0 +1,13 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
ngx_include="unistd.h"; . auto/include
|
||||||
|
ngx_include="inttypes.h"; . auto/include
|
||||||
|
ngx_include="limits.h"; . auto/include
|
||||||
|
ngx_include="sys/filio.h"; . auto/include
|
||||||
|
ngx_include="sys/param.h"; . auto/include
|
||||||
|
ngx_include="sys/mount.h"; . auto/include
|
||||||
|
ngx_include="sys/statvfs.h"; . auto/include
|
||||||
|
ngx_include="crypt.h"; . auto/include
|
@ -0,0 +1,58 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
echo $ngx_n "checking for $ngx_include ...$ngx_c"
|
||||||
|
|
||||||
|
cat << END >> $NGX_AUTOCONF_ERR
|
||||||
|
|
||||||
|
----------------------------------------
|
||||||
|
checking for $ngx_include
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
|
ngx_found=no
|
||||||
|
|
||||||
|
cat << END > $NGX_AUTOTEST.c
|
||||||
|
|
||||||
|
$NGX_INCLUDE_SYS_PARAM_H
|
||||||
|
#include <$ngx_include>
|
||||||
|
|
||||||
|
int main(void) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
|
ngx_test="$CC -o $NGX_AUTOTEST $NGX_AUTOTEST.c"
|
||||||
|
|
||||||
|
eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&1"
|
||||||
|
|
||||||
|
if [ -x $NGX_AUTOTEST ]; then
|
||||||
|
|
||||||
|
ngx_found=yes
|
||||||
|
|
||||||
|
echo " found"
|
||||||
|
|
||||||
|
ngx_name=`echo $ngx_include \
|
||||||
|
| tr abcdefghijklmnopqrstuvwxyz/. ABCDEFGHIJKLMNOPQRSTUVWXYZ__`
|
||||||
|
|
||||||
|
|
||||||
|
have=NGX_HAVE_$ngx_name . auto/have_headers
|
||||||
|
|
||||||
|
eval "NGX_INCLUDE_$ngx_name='#include <$ngx_include>'"
|
||||||
|
|
||||||
|
else
|
||||||
|
echo " not found"
|
||||||
|
|
||||||
|
echo "----------" >> $NGX_AUTOCONF_ERR
|
||||||
|
cat $NGX_AUTOTEST.c >> $NGX_AUTOCONF_ERR
|
||||||
|
echo "----------" >> $NGX_AUTOCONF_ERR
|
||||||
|
echo $ngx_test >> $NGX_AUTOCONF_ERR
|
||||||
|
echo "----------" >> $NGX_AUTOCONF_ERR
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -rf $NGX_AUTOTEST*
|
@ -0,0 +1,51 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
NGX_MAKEFILE=$NGX_OBJS/Makefile
|
||||||
|
NGX_MODULES_C=$NGX_OBJS/ngx_modules.c
|
||||||
|
|
||||||
|
NGX_AUTO_HEADERS_H=$NGX_OBJS/ngx_auto_headers.h
|
||||||
|
NGX_AUTO_CONFIG_H=$NGX_OBJS/ngx_auto_config.h
|
||||||
|
|
||||||
|
NGX_AUTOTEST=$NGX_OBJS/autotest
|
||||||
|
NGX_AUTOCONF_ERR=$NGX_OBJS/autoconf.err
|
||||||
|
|
||||||
|
# STUBs
|
||||||
|
NGX_ERR=$NGX_OBJS/autoconf.err
|
||||||
|
MAKEFILE=$NGX_OBJS/Makefile
|
||||||
|
|
||||||
|
|
||||||
|
NGX_PCH=
|
||||||
|
NGX_USE_PCH=
|
||||||
|
|
||||||
|
|
||||||
|
# check the echo's "-n" option and "\c" capability
|
||||||
|
|
||||||
|
if echo "test\c" | grep c >/dev/null; then
|
||||||
|
|
||||||
|
if echo -n test | grep n >/dev/null; then
|
||||||
|
ngx_n=
|
||||||
|
ngx_c=
|
||||||
|
|
||||||
|
else
|
||||||
|
ngx_n=-n
|
||||||
|
ngx_c=
|
||||||
|
fi
|
||||||
|
|
||||||
|
else
|
||||||
|
ngx_n=
|
||||||
|
ngx_c='\c'
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# create Makefile
|
||||||
|
|
||||||
|
cat << END > Makefile
|
||||||
|
|
||||||
|
default: build
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf Makefile $NGX_OBJS
|
||||||
|
END
|
@ -0,0 +1,218 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
if [ $USE_PERL != NO ]; then
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
install_perl_modules:
|
||||||
|
cd $NGX_OBJS/src/http/modules/perl && \$(MAKE) install
|
||||||
|
END
|
||||||
|
|
||||||
|
NGX_INSTALL_PERL_MODULES=install_perl_modules
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
case ".$NGX_SBIN_PATH" in
|
||||||
|
./*)
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
NGX_SBIN_PATH=$NGX_PREFIX/$NGX_SBIN_PATH
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
case ".$NGX_MODULES_PATH" in
|
||||||
|
./*)
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
NGX_MODULES_PATH=$NGX_PREFIX/$NGX_MODULES_PATH
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
NGX_MODULES_PATH=`dirname $NGX_MODULES_PATH/.`
|
||||||
|
|
||||||
|
|
||||||
|
case ".$NGX_CONF_PATH" in
|
||||||
|
./*)
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
NGX_CONF_PATH=$NGX_PREFIX/$NGX_CONF_PATH
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
NGX_CONF_PREFIX=`dirname $NGX_CONF_PATH`
|
||||||
|
|
||||||
|
|
||||||
|
case ".$NGX_PID_PATH" in
|
||||||
|
./*)
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
NGX_PID_PATH=$NGX_PREFIX/$NGX_PID_PATH
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
case ".$NGX_ERROR_LOG_PATH" in
|
||||||
|
./* | .)
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
NGX_ERROR_LOG_PATH=$NGX_PREFIX/$NGX_ERROR_LOG_PATH
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
case ".$NGX_HTTP_LOG_PATH" in
|
||||||
|
./*)
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
NGX_HTTP_LOG_PATH=$NGX_PREFIX/$NGX_HTTP_LOG_PATH
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
if test -f man/nginx.8 ; then
|
||||||
|
NGX_MAN=man/nginx.8
|
||||||
|
else
|
||||||
|
NGX_MAN=docs/man/nginx.8
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -d html ; then
|
||||||
|
NGX_HTML=html
|
||||||
|
else
|
||||||
|
NGX_HTML=docs/html
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
manpage: $NGX_OBJS/nginx.8
|
||||||
|
|
||||||
|
$NGX_OBJS/nginx.8: $NGX_MAN $NGX_AUTO_CONFIG_H
|
||||||
|
sed -e "s|%%PREFIX%%|$NGX_PREFIX|" \\
|
||||||
|
-e "s|%%PID_PATH%%|$NGX_PID_PATH|" \\
|
||||||
|
-e "s|%%CONF_PATH%%|$NGX_CONF_PATH|" \\
|
||||||
|
-e "s|%%ERROR_LOG_PATH%%|${NGX_ERROR_LOG_PATH:-stderr}|" \\
|
||||||
|
< $NGX_MAN > \$@
|
||||||
|
|
||||||
|
install: build $NGX_INSTALL_PERL_MODULES
|
||||||
|
test -d '\$(DESTDIR)$NGX_PREFIX' || mkdir -p '\$(DESTDIR)$NGX_PREFIX'
|
||||||
|
|
||||||
|
test -d '\$(DESTDIR)`dirname "$NGX_SBIN_PATH"`' \\
|
||||||
|
|| mkdir -p '\$(DESTDIR)`dirname "$NGX_SBIN_PATH"`'
|
||||||
|
test ! -f '\$(DESTDIR)$NGX_SBIN_PATH' \\
|
||||||
|
|| mv '\$(DESTDIR)$NGX_SBIN_PATH' \\
|
||||||
|
'\$(DESTDIR)$NGX_SBIN_PATH.old'
|
||||||
|
cp $NGX_OBJS/nginx '\$(DESTDIR)$NGX_SBIN_PATH'
|
||||||
|
|
||||||
|
test -d '\$(DESTDIR)$NGX_CONF_PREFIX' \\
|
||||||
|
|| mkdir -p '\$(DESTDIR)$NGX_CONF_PREFIX'
|
||||||
|
|
||||||
|
cp conf/koi-win '\$(DESTDIR)$NGX_CONF_PREFIX'
|
||||||
|
cp conf/koi-utf '\$(DESTDIR)$NGX_CONF_PREFIX'
|
||||||
|
cp conf/win-utf '\$(DESTDIR)$NGX_CONF_PREFIX'
|
||||||
|
|
||||||
|
test -f '\$(DESTDIR)$NGX_CONF_PREFIX/mime.types' \\
|
||||||
|
|| cp conf/mime.types '\$(DESTDIR)$NGX_CONF_PREFIX'
|
||||||
|
cp conf/mime.types '\$(DESTDIR)$NGX_CONF_PREFIX/mime.types.default'
|
||||||
|
|
||||||
|
test -f '\$(DESTDIR)$NGX_CONF_PREFIX/fastcgi_params' \\
|
||||||
|
|| cp conf/fastcgi_params '\$(DESTDIR)$NGX_CONF_PREFIX'
|
||||||
|
cp conf/fastcgi_params \\
|
||||||
|
'\$(DESTDIR)$NGX_CONF_PREFIX/fastcgi_params.default'
|
||||||
|
|
||||||
|
test -f '\$(DESTDIR)$NGX_CONF_PREFIX/fastcgi.conf' \\
|
||||||
|
|| cp conf/fastcgi.conf '\$(DESTDIR)$NGX_CONF_PREFIX'
|
||||||
|
cp conf/fastcgi.conf '\$(DESTDIR)$NGX_CONF_PREFIX/fastcgi.conf.default'
|
||||||
|
|
||||||
|
test -f '\$(DESTDIR)$NGX_CONF_PREFIX/uwsgi_params' \\
|
||||||
|
|| cp conf/uwsgi_params '\$(DESTDIR)$NGX_CONF_PREFIX'
|
||||||
|
cp conf/uwsgi_params \\
|
||||||
|
'\$(DESTDIR)$NGX_CONF_PREFIX/uwsgi_params.default'
|
||||||
|
|
||||||
|
test -f '\$(DESTDIR)$NGX_CONF_PREFIX/scgi_params' \\
|
||||||
|
|| cp conf/scgi_params '\$(DESTDIR)$NGX_CONF_PREFIX'
|
||||||
|
cp conf/scgi_params \\
|
||||||
|
'\$(DESTDIR)$NGX_CONF_PREFIX/scgi_params.default'
|
||||||
|
|
||||||
|
test -f '\$(DESTDIR)$NGX_CONF_PATH' \\
|
||||||
|
|| cp conf/nginx.conf '\$(DESTDIR)$NGX_CONF_PATH'
|
||||||
|
cp conf/nginx.conf '\$(DESTDIR)$NGX_CONF_PREFIX/nginx.conf.default'
|
||||||
|
|
||||||
|
test -d '\$(DESTDIR)`dirname "$NGX_PID_PATH"`' \\
|
||||||
|
|| mkdir -p '\$(DESTDIR)`dirname "$NGX_PID_PATH"`'
|
||||||
|
|
||||||
|
test -d '\$(DESTDIR)`dirname "$NGX_HTTP_LOG_PATH"`' \\
|
||||||
|
|| mkdir -p '\$(DESTDIR)`dirname "$NGX_HTTP_LOG_PATH"`'
|
||||||
|
|
||||||
|
test -d '\$(DESTDIR)$NGX_PREFIX/html' \\
|
||||||
|
|| cp -R $NGX_HTML '\$(DESTDIR)$NGX_PREFIX'
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
|
if test -n "$NGX_ERROR_LOG_PATH"; then
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
test -d '\$(DESTDIR)`dirname "$NGX_ERROR_LOG_PATH"`' \\
|
||||||
|
|| mkdir -p '\$(DESTDIR)`dirname "$NGX_ERROR_LOG_PATH"`'
|
||||||
|
END
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if test -n "$DYNAMIC_MODULES"; then
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
test -d '\$(DESTDIR)$NGX_MODULES_PATH' \\
|
||||||
|
|| mkdir -p '\$(DESTDIR)$NGX_MODULES_PATH'
|
||||||
|
END
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
for ngx_module in $DYNAMIC_MODULES
|
||||||
|
do
|
||||||
|
ngx_module=$ngx_module$ngx_modext
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
test ! -f '\$(DESTDIR)$NGX_MODULES_PATH/$ngx_module' \\
|
||||||
|
|| mv '\$(DESTDIR)$NGX_MODULES_PATH/$ngx_module' \\
|
||||||
|
'\$(DESTDIR)$NGX_MODULES_PATH/$ngx_module.old'
|
||||||
|
cp $NGX_OBJS/$ngx_module '\$(DESTDIR)$NGX_MODULES_PATH/$ngx_module'
|
||||||
|
END
|
||||||
|
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
# create Makefile
|
||||||
|
|
||||||
|
cat << END >> Makefile
|
||||||
|
|
||||||
|
build:
|
||||||
|
\$(MAKE) -f $NGX_MAKEFILE
|
||||||
|
|
||||||
|
install:
|
||||||
|
\$(MAKE) -f $NGX_MAKEFILE install
|
||||||
|
|
||||||
|
modules:
|
||||||
|
\$(MAKE) -f $NGX_MAKEFILE modules
|
||||||
|
|
||||||
|
upgrade:
|
||||||
|
$NGX_SBIN_PATH -t
|
||||||
|
|
||||||
|
kill -USR2 \`cat $NGX_PID_PATH\`
|
||||||
|
sleep 1
|
||||||
|
test -f $NGX_PID_PATH.oldbin
|
||||||
|
|
||||||
|
kill -QUIT \`cat $NGX_PID_PATH.oldbin\`
|
||||||
|
END
|
@ -0,0 +1,54 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
if [ $USE_PCRE = YES -o $PCRE != NONE ]; then
|
||||||
|
. auto/lib/pcre/conf
|
||||||
|
|
||||||
|
else
|
||||||
|
if [ $USE_PCRE = DISABLED -a $HTTP = YES -a $HTTP_REWRITE = YES ]; then
|
||||||
|
|
||||||
|
cat << END
|
||||||
|
|
||||||
|
$0: error: the HTTP rewrite module requires the PCRE library.
|
||||||
|
You can either disable the module by using --without-http_rewrite_module
|
||||||
|
option or you have to enable the PCRE support.
|
||||||
|
|
||||||
|
END
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ $USE_OPENSSL = YES ]; then
|
||||||
|
. auto/lib/openssl/conf
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $USE_ZLIB = YES ]; then
|
||||||
|
. auto/lib/zlib/conf
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $USE_LIBXSLT != NO ]; then
|
||||||
|
. auto/lib/libxslt/conf
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $USE_LIBGD != NO ]; then
|
||||||
|
. auto/lib/libgd/conf
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $USE_PERL != NO ]; then
|
||||||
|
. auto/lib/perl/conf
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $USE_GEOIP != NO ]; then
|
||||||
|
. auto/lib/geoip/conf
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $NGX_GOOGLE_PERFTOOLS = YES ]; then
|
||||||
|
. auto/lib/google-perftools/conf
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $NGX_LIBATOMIC != NO ]; then
|
||||||
|
. auto/lib/libatomic/conf
|
||||||
|
fi
|
@ -0,0 +1,97 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
ngx_feature="GeoIP library"
|
||||||
|
ngx_feature_name=
|
||||||
|
ngx_feature_run=no
|
||||||
|
ngx_feature_incs="#include <GeoIP.h>"
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs="-lGeoIP"
|
||||||
|
ngx_feature_test="GeoIP_open(NULL, 0)"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
|
||||||
|
# FreeBSD port
|
||||||
|
|
||||||
|
ngx_feature="GeoIP library in /usr/local/"
|
||||||
|
ngx_feature_path="/usr/local/include"
|
||||||
|
|
||||||
|
if [ $NGX_RPATH = YES ]; then
|
||||||
|
ngx_feature_libs="-R/usr/local/lib -L/usr/local/lib -lGeoIP"
|
||||||
|
else
|
||||||
|
ngx_feature_libs="-L/usr/local/lib -lGeoIP"
|
||||||
|
fi
|
||||||
|
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
|
||||||
|
# NetBSD port
|
||||||
|
|
||||||
|
ngx_feature="GeoIP library in /usr/pkg/"
|
||||||
|
ngx_feature_path="/usr/pkg/include"
|
||||||
|
|
||||||
|
if [ $NGX_RPATH = YES ]; then
|
||||||
|
ngx_feature_libs="-R/usr/pkg/lib -L/usr/pkg/lib -lGeoIP"
|
||||||
|
else
|
||||||
|
ngx_feature_libs="-L/usr/pkg/lib -lGeoIP"
|
||||||
|
fi
|
||||||
|
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
|
||||||
|
# MacPorts
|
||||||
|
|
||||||
|
ngx_feature="GeoIP library in /opt/local/"
|
||||||
|
ngx_feature_path="/opt/local/include"
|
||||||
|
|
||||||
|
if [ $NGX_RPATH = YES ]; then
|
||||||
|
ngx_feature_libs="-R/opt/local/lib -L/opt/local/lib -lGeoIP"
|
||||||
|
else
|
||||||
|
ngx_feature_libs="-L/opt/local/lib -lGeoIP"
|
||||||
|
fi
|
||||||
|
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ $ngx_found = yes ]; then
|
||||||
|
|
||||||
|
CORE_INCS="$CORE_INCS $ngx_feature_path"
|
||||||
|
|
||||||
|
if [ $USE_GEOIP = YES ]; then
|
||||||
|
CORE_LIBS="$CORE_LIBS $ngx_feature_libs"
|
||||||
|
fi
|
||||||
|
|
||||||
|
NGX_LIB_GEOIP=$ngx_feature_libs
|
||||||
|
|
||||||
|
ngx_feature="GeoIP IPv6 support"
|
||||||
|
ngx_feature_name="NGX_HAVE_GEOIP_V6"
|
||||||
|
ngx_feature_run=no
|
||||||
|
ngx_feature_incs="#include <stdio.h>
|
||||||
|
#include <GeoIP.h>"
|
||||||
|
#ngx_feature_path=
|
||||||
|
#ngx_feature_libs=
|
||||||
|
ngx_feature_test="printf(\"%d\", GEOIP_CITY_EDITION_REV0_V6);"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
cat << END
|
||||||
|
|
||||||
|
$0: error: the GeoIP module requires the GeoIP library.
|
||||||
|
You can either do not enable the module or install the library.
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
exit 1
|
||||||
|
fi
|
@ -0,0 +1,62 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
ngx_feature="Google perftools"
|
||||||
|
ngx_feature_name=
|
||||||
|
ngx_feature_run=no
|
||||||
|
ngx_feature_incs=
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs="-lprofiler"
|
||||||
|
ngx_feature_test="void ProfilerStop(void);
|
||||||
|
ProfilerStop()"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
|
||||||
|
# FreeBSD port
|
||||||
|
|
||||||
|
ngx_feature="Google perftools in /usr/local/"
|
||||||
|
|
||||||
|
if [ $NGX_RPATH = YES ]; then
|
||||||
|
ngx_feature_libs="-R/usr/local/lib -L/usr/local/lib -lprofiler"
|
||||||
|
else
|
||||||
|
ngx_feature_libs="-L/usr/local/lib -lprofiler"
|
||||||
|
fi
|
||||||
|
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
|
||||||
|
# MacPorts
|
||||||
|
|
||||||
|
ngx_feature="Google perftools in /opt/local/"
|
||||||
|
|
||||||
|
if [ $NGX_RPATH = YES ]; then
|
||||||
|
ngx_feature_libs="-R/opt/local/lib -L/opt/local/lib -lprofiler"
|
||||||
|
else
|
||||||
|
ngx_feature_libs="-L/opt/local/lib -lprofiler"
|
||||||
|
fi
|
||||||
|
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ $ngx_found = yes ]; then
|
||||||
|
CORE_LIBS="$CORE_LIBS $ngx_feature_libs"
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
cat << END
|
||||||
|
|
||||||
|
$0: error: the Google perftools module requires the Google perftools
|
||||||
|
library. You can either do not enable the module or install the library.
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
exit 1
|
||||||
|
fi
|
@ -0,0 +1,43 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
if [ $NGX_LIBATOMIC != YES ]; then
|
||||||
|
|
||||||
|
have=NGX_HAVE_LIBATOMIC . auto/have
|
||||||
|
CORE_INCS="$CORE_INCS $NGX_LIBATOMIC/src"
|
||||||
|
LINK_DEPS="$LINK_DEPS $NGX_LIBATOMIC/src/libatomic_ops.a"
|
||||||
|
CORE_LIBS="$CORE_LIBS $NGX_LIBATOMIC/src/libatomic_ops.a"
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
ngx_feature="atomic_ops library"
|
||||||
|
ngx_feature_name=NGX_HAVE_LIBATOMIC
|
||||||
|
ngx_feature_run=yes
|
||||||
|
ngx_feature_incs="#define AO_REQUIRE_CAS
|
||||||
|
#include <atomic_ops.h>"
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs="-latomic_ops"
|
||||||
|
ngx_feature_test="long n = 0;
|
||||||
|
if (!AO_compare_and_swap(&n, 0, 1))
|
||||||
|
return 1;
|
||||||
|
if (AO_fetch_and_add(&n, 1) != 1)
|
||||||
|
return 1;
|
||||||
|
if (n != 2)
|
||||||
|
return 1;
|
||||||
|
AO_nop();"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
if [ $ngx_found = yes ]; then
|
||||||
|
CORE_LIBS="$CORE_LIBS $ngx_feature_libs"
|
||||||
|
else
|
||||||
|
|
||||||
|
cat << END
|
||||||
|
|
||||||
|
$0: error: libatomic_ops library was not found.
|
||||||
|
|
||||||
|
END
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
@ -0,0 +1,16 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
$NGX_LIBATOMIC/src/libatomic_ops.a: $NGX_LIBATOMIC/Makefile
|
||||||
|
cd $NGX_LIBATOMIC && \$(MAKE)
|
||||||
|
|
||||||
|
$NGX_LIBATOMIC/Makefile: $NGX_MAKEFILE
|
||||||
|
cd $NGX_LIBATOMIC \\
|
||||||
|
&& if [ -f Makefile ]; then \$(MAKE) distclean; fi \\
|
||||||
|
&& ./configure
|
||||||
|
|
||||||
|
END
|
@ -0,0 +1,95 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
ngx_feature="GD library"
|
||||||
|
ngx_feature_name=
|
||||||
|
ngx_feature_run=no
|
||||||
|
ngx_feature_incs="#include <gd.h>"
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs="-lgd"
|
||||||
|
ngx_feature_test="gdImagePtr img = gdImageCreateFromGifPtr(1, NULL);
|
||||||
|
(void) img"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
|
||||||
|
# FreeBSD port
|
||||||
|
|
||||||
|
ngx_feature="GD library in /usr/local/"
|
||||||
|
ngx_feature_path="/usr/local/include"
|
||||||
|
|
||||||
|
if [ $NGX_RPATH = YES ]; then
|
||||||
|
ngx_feature_libs="-R/usr/local/lib -L/usr/local/lib -lgd"
|
||||||
|
else
|
||||||
|
ngx_feature_libs="-L/usr/local/lib -lgd"
|
||||||
|
fi
|
||||||
|
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
|
||||||
|
# NetBSD port
|
||||||
|
|
||||||
|
ngx_feature="GD library in /usr/pkg/"
|
||||||
|
ngx_feature_path="/usr/pkg/include"
|
||||||
|
|
||||||
|
if [ $NGX_RPATH = YES ]; then
|
||||||
|
ngx_feature_libs="-R/usr/pkg/lib -L/usr/pkg/lib -lgd"
|
||||||
|
else
|
||||||
|
ngx_feature_libs="-L/usr/pkg/lib -lgd"
|
||||||
|
fi
|
||||||
|
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
|
||||||
|
# MacPorts
|
||||||
|
|
||||||
|
ngx_feature="GD library in /opt/local/"
|
||||||
|
ngx_feature_path="/opt/local/include"
|
||||||
|
|
||||||
|
if [ $NGX_RPATH = YES ]; then
|
||||||
|
ngx_feature_libs="-R/opt/local/lib -L/opt/local/lib -lgd"
|
||||||
|
else
|
||||||
|
ngx_feature_libs="-L/opt/local/lib -lgd"
|
||||||
|
fi
|
||||||
|
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ $ngx_found = yes ]; then
|
||||||
|
|
||||||
|
CORE_INCS="$CORE_INCS $ngx_feature_path"
|
||||||
|
|
||||||
|
if [ $USE_LIBGD = YES ]; then
|
||||||
|
CORE_LIBS="$CORE_LIBS $ngx_feature_libs"
|
||||||
|
fi
|
||||||
|
|
||||||
|
NGX_LIB_LIBGD=$ngx_feature_libs
|
||||||
|
|
||||||
|
ngx_feature="GD WebP support"
|
||||||
|
ngx_feature_name="NGX_HAVE_GD_WEBP"
|
||||||
|
ngx_feature_test="gdImagePtr img = gdImageCreateFromWebpPtr(1, NULL);
|
||||||
|
(void) img"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
cat << END
|
||||||
|
|
||||||
|
$0: error: the HTTP image filter module requires the GD library.
|
||||||
|
You can either do not enable the module or install the libraries.
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
exit 1
|
||||||
|
|
||||||
|
fi
|
@ -0,0 +1,165 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
ngx_feature="libxslt"
|
||||||
|
ngx_feature_name=
|
||||||
|
ngx_feature_run=no
|
||||||
|
ngx_feature_incs="#include <libxml/parser.h>
|
||||||
|
#include <libxml/tree.h>
|
||||||
|
#include <libxslt/xslt.h>
|
||||||
|
#include <libxslt/xsltInternals.h>
|
||||||
|
#include <libxslt/transform.h>
|
||||||
|
#include <libxslt/xsltutils.h>"
|
||||||
|
ngx_feature_path="/usr/include/libxml2"
|
||||||
|
ngx_feature_libs="-lxml2 -lxslt"
|
||||||
|
ngx_feature_test="xmlParserCtxtPtr ctxt = NULL;
|
||||||
|
xsltStylesheetPtr sheet = NULL;
|
||||||
|
xmlDocPtr doc = NULL;
|
||||||
|
xmlParseChunk(ctxt, NULL, 0, 0);
|
||||||
|
xsltApplyStylesheet(sheet, doc, NULL);"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
|
||||||
|
# FreeBSD port
|
||||||
|
|
||||||
|
ngx_feature="libxslt in /usr/local/"
|
||||||
|
ngx_feature_path="/usr/local/include/libxml2 /usr/local/include"
|
||||||
|
|
||||||
|
if [ $NGX_RPATH = YES ]; then
|
||||||
|
ngx_feature_libs="-R/usr/local/lib -L/usr/local/lib -lxml2 -lxslt"
|
||||||
|
else
|
||||||
|
ngx_feature_libs="-L/usr/local/lib -lxml2 -lxslt"
|
||||||
|
fi
|
||||||
|
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
|
||||||
|
# NetBSD port
|
||||||
|
|
||||||
|
ngx_feature="libxslt in /usr/pkg/"
|
||||||
|
ngx_feature_path="/usr/pkg/include/libxml2 /usr/pkg/include"
|
||||||
|
|
||||||
|
if [ $NGX_RPATH = YES ]; then
|
||||||
|
ngx_feature_libs="-R/usr/pkg/lib -L/usr/pkg/lib -lxml2 -lxslt"
|
||||||
|
else
|
||||||
|
ngx_feature_libs="-L/usr/pkg/lib -lxml2 -lxslt"
|
||||||
|
fi
|
||||||
|
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
|
||||||
|
# MacPorts
|
||||||
|
|
||||||
|
ngx_feature="libxslt in /opt/local/"
|
||||||
|
ngx_feature_path="/opt/local/include/libxml2 /opt/local/include"
|
||||||
|
|
||||||
|
if [ $NGX_RPATH = YES ]; then
|
||||||
|
ngx_feature_libs="-R/opt/local/lib -L/opt/local/lib -lxml2 -lxslt"
|
||||||
|
else
|
||||||
|
ngx_feature_libs="-L/opt/local/lib -lxml2 -lxslt"
|
||||||
|
fi
|
||||||
|
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ $ngx_found = yes ]; then
|
||||||
|
|
||||||
|
CORE_INCS="$CORE_INCS $ngx_feature_path"
|
||||||
|
|
||||||
|
if [ $USE_LIBXSLT = YES ]; then
|
||||||
|
CORE_LIBS="$CORE_LIBS $ngx_feature_libs"
|
||||||
|
fi
|
||||||
|
|
||||||
|
NGX_LIB_LIBXSLT=$ngx_feature_libs
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
cat << END
|
||||||
|
|
||||||
|
$0: error: the HTTP XSLT module requires the libxml2/libxslt
|
||||||
|
libraries. You can either do not enable the module or install the libraries.
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
ngx_feature="libexslt"
|
||||||
|
ngx_feature_name=NGX_HAVE_EXSLT
|
||||||
|
ngx_feature_run=no
|
||||||
|
ngx_feature_incs="#include <libexslt/exslt.h>"
|
||||||
|
ngx_feature_path="/usr/include/libxml2"
|
||||||
|
ngx_feature_libs="-lexslt"
|
||||||
|
ngx_feature_test="exsltRegisterAll();"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
|
||||||
|
# FreeBSD port
|
||||||
|
|
||||||
|
ngx_feature="libexslt in /usr/local/"
|
||||||
|
ngx_feature_path="/usr/local/include/libxml2 /usr/local/include"
|
||||||
|
|
||||||
|
if [ $NGX_RPATH = YES ]; then
|
||||||
|
ngx_feature_libs="-R/usr/local/lib -L/usr/local/lib -lexslt"
|
||||||
|
else
|
||||||
|
ngx_feature_libs="-L/usr/local/lib -lexslt"
|
||||||
|
fi
|
||||||
|
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
|
||||||
|
# NetBSD port
|
||||||
|
|
||||||
|
ngx_feature="libexslt in /usr/pkg/"
|
||||||
|
ngx_feature_path="/usr/pkg/include/libxml2 /usr/local/include"
|
||||||
|
|
||||||
|
if [ $NGX_RPATH = YES ]; then
|
||||||
|
ngx_feature_libs="-R/usr/pkg/lib -L/usr/pkg/lib -lexslt"
|
||||||
|
else
|
||||||
|
ngx_feature_libs="-L/usr/pkg/lib -lexslt"
|
||||||
|
fi
|
||||||
|
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
|
||||||
|
# MacPorts
|
||||||
|
|
||||||
|
ngx_feature="libexslt in /opt/local/"
|
||||||
|
ngx_feature_path="/opt/local/include/libxml2 /opt/local/include"
|
||||||
|
|
||||||
|
if [ $NGX_RPATH = YES ]; then
|
||||||
|
ngx_feature_libs="-R/opt/local/lib -L/opt/local/lib -lexslt"
|
||||||
|
else
|
||||||
|
ngx_feature_libs="-L/opt/local/lib -lexslt"
|
||||||
|
fi
|
||||||
|
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ $ngx_found = yes ]; then
|
||||||
|
if [ $USE_LIBXSLT = YES ]; then
|
||||||
|
CORE_LIBS="$CORE_LIBS -lexslt"
|
||||||
|
fi
|
||||||
|
|
||||||
|
NGX_LIB_LIBXSLT="$NGX_LIB_LIBXSLT -lexslt"
|
||||||
|
fi
|
@ -0,0 +1,24 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
if [ $PCRE != NONE -a $PCRE != NO -a $PCRE != YES ]; then
|
||||||
|
. auto/lib/pcre/make
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $OPENSSL != NONE -a $OPENSSL != NO -a $OPENSSL != YES ]; then
|
||||||
|
. auto/lib/openssl/make
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $ZLIB != NONE -a $ZLIB != NO -a $ZLIB != YES ]; then
|
||||||
|
. auto/lib/zlib/make
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $NGX_LIBATOMIC != NO -a $NGX_LIBATOMIC != YES ]; then
|
||||||
|
. auto/lib/libatomic/make
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $USE_PERL != NO ]; then
|
||||||
|
. auto/lib/perl/make
|
||||||
|
fi
|
@ -0,0 +1,142 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
if [ $OPENSSL != NONE ]; then
|
||||||
|
|
||||||
|
case "$CC" in
|
||||||
|
|
||||||
|
cl | bcc32)
|
||||||
|
have=NGX_OPENSSL . auto/have
|
||||||
|
have=NGX_SSL . auto/have
|
||||||
|
|
||||||
|
CFLAGS="$CFLAGS -DNO_SYS_TYPES_H"
|
||||||
|
|
||||||
|
CORE_INCS="$CORE_INCS $OPENSSL/openssl/include"
|
||||||
|
CORE_DEPS="$CORE_DEPS $OPENSSL/openssl/include/openssl/ssl.h"
|
||||||
|
|
||||||
|
if [ -f $OPENSSL/ms/do_ms.bat ]; then
|
||||||
|
# before OpenSSL 1.1.0
|
||||||
|
CORE_LIBS="$CORE_LIBS $OPENSSL/openssl/lib/ssleay32.lib"
|
||||||
|
CORE_LIBS="$CORE_LIBS $OPENSSL/openssl/lib/libeay32.lib"
|
||||||
|
else
|
||||||
|
# OpenSSL 1.1.0+
|
||||||
|
CORE_LIBS="$CORE_LIBS $OPENSSL/openssl/lib/libssl.lib"
|
||||||
|
CORE_LIBS="$CORE_LIBS $OPENSSL/openssl/lib/libcrypto.lib"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# libeay32.lib requires gdi32.lib
|
||||||
|
CORE_LIBS="$CORE_LIBS gdi32.lib"
|
||||||
|
# OpenSSL 1.0.0 requires crypt32.lib
|
||||||
|
CORE_LIBS="$CORE_LIBS crypt32.lib"
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
have=NGX_OPENSSL . auto/have
|
||||||
|
have=NGX_SSL . auto/have
|
||||||
|
|
||||||
|
CORE_INCS="$CORE_INCS $OPENSSL/.openssl/include"
|
||||||
|
CORE_DEPS="$CORE_DEPS $OPENSSL/.openssl/include/openssl/ssl.h"
|
||||||
|
CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libssl.a"
|
||||||
|
CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libcrypto.a"
|
||||||
|
CORE_LIBS="$CORE_LIBS $NGX_LIBDL"
|
||||||
|
CORE_LIBS="$CORE_LIBS $NGX_LIBPTHREAD"
|
||||||
|
|
||||||
|
if [ "$NGX_PLATFORM" = win32 ]; then
|
||||||
|
CORE_LIBS="$CORE_LIBS -lgdi32 -lcrypt32 -lws2_32"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
if [ "$NGX_PLATFORM" != win32 ]; then
|
||||||
|
|
||||||
|
OPENSSL=NO
|
||||||
|
|
||||||
|
ngx_feature="OpenSSL library"
|
||||||
|
ngx_feature_name="NGX_OPENSSL"
|
||||||
|
ngx_feature_run=no
|
||||||
|
ngx_feature_incs="#include <openssl/ssl.h>"
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs="-lssl -lcrypto $NGX_LIBDL $NGX_LIBPTHREAD"
|
||||||
|
ngx_feature_test="SSL_CTX_set_options(NULL, 0)"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
|
||||||
|
# FreeBSD port
|
||||||
|
|
||||||
|
ngx_feature="OpenSSL library in /usr/local/"
|
||||||
|
ngx_feature_path="/usr/local/include"
|
||||||
|
|
||||||
|
if [ $NGX_RPATH = YES ]; then
|
||||||
|
ngx_feature_libs="-R/usr/local/lib -L/usr/local/lib -lssl -lcrypto"
|
||||||
|
else
|
||||||
|
ngx_feature_libs="-L/usr/local/lib -lssl -lcrypto"
|
||||||
|
fi
|
||||||
|
|
||||||
|
ngx_feature_libs="$ngx_feature_libs $NGX_LIBDL $NGX_LIBPTHREAD"
|
||||||
|
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
|
||||||
|
# NetBSD port
|
||||||
|
|
||||||
|
ngx_feature="OpenSSL library in /usr/pkg/"
|
||||||
|
ngx_feature_path="/usr/pkg/include"
|
||||||
|
|
||||||
|
if [ $NGX_RPATH = YES ]; then
|
||||||
|
ngx_feature_libs="-R/usr/pkg/lib -L/usr/pkg/lib -lssl -lcrypto"
|
||||||
|
else
|
||||||
|
ngx_feature_libs="-L/usr/pkg/lib -lssl -lcrypto"
|
||||||
|
fi
|
||||||
|
|
||||||
|
ngx_feature_libs="$ngx_feature_libs $NGX_LIBDL $NGX_LIBPTHREAD"
|
||||||
|
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
|
||||||
|
# MacPorts
|
||||||
|
|
||||||
|
ngx_feature="OpenSSL library in /opt/local/"
|
||||||
|
ngx_feature_path="/opt/local/include"
|
||||||
|
|
||||||
|
if [ $NGX_RPATH = YES ]; then
|
||||||
|
ngx_feature_libs="-R/opt/local/lib -L/opt/local/lib -lssl -lcrypto"
|
||||||
|
else
|
||||||
|
ngx_feature_libs="-L/opt/local/lib -lssl -lcrypto"
|
||||||
|
fi
|
||||||
|
|
||||||
|
ngx_feature_libs="$ngx_feature_libs $NGX_LIBDL $NGX_LIBPTHREAD"
|
||||||
|
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $ngx_found = yes ]; then
|
||||||
|
have=NGX_SSL . auto/have
|
||||||
|
CORE_INCS="$CORE_INCS $ngx_feature_path"
|
||||||
|
CORE_LIBS="$CORE_LIBS $ngx_feature_libs"
|
||||||
|
OPENSSL=YES
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $OPENSSL != YES ]; then
|
||||||
|
|
||||||
|
cat << END
|
||||||
|
|
||||||
|
$0: error: SSL modules require the OpenSSL library.
|
||||||
|
You can either do not enable the modules, or install the OpenSSL library
|
||||||
|
into the system, or build the OpenSSL library statically from the source
|
||||||
|
with nginx by using --with-openssl=<path> option.
|
||||||
|
|
||||||
|
END
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
fi
|
@ -0,0 +1,62 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
case "$CC" in
|
||||||
|
|
||||||
|
cl)
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
$OPENSSL/openssl/include/openssl/ssl.h: $NGX_MAKEFILE
|
||||||
|
\$(MAKE) -f auto/lib/openssl/makefile.msvc \
|
||||||
|
OPENSSL="$OPENSSL" OPENSSL_OPT="$OPENSSL_OPT"
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
;;
|
||||||
|
|
||||||
|
bcc32)
|
||||||
|
|
||||||
|
ngx_opt=`echo "-DOPENSSL=\"$OPENSSL\" -DOPENSSL_OPT=\"$OPENSSL_OPT\"" \
|
||||||
|
| sed -e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
`echo "$OPENSSL\\openssl\\lib\\libeay32.lib: \
|
||||||
|
$OPENSSL\\openssl\\include\\openssl\\ssl.h" \
|
||||||
|
| sed -e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
|
||||||
|
`echo "$OPENSSL\\openssl\\lib\\ssleay32.lib: \
|
||||||
|
$OPENSSL\\openssl\\include\\openssl\\ssl.h" \
|
||||||
|
| sed -e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
|
||||||
|
`echo "$OPENSSL\\openssl\\include\\openssl\\ssl.h: $NGX_MAKEFILE" \
|
||||||
|
| sed -e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
\$(MAKE) -f auto/lib/openssl/makefile.bcc $ngx_opt
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
case $OPENSSL in
|
||||||
|
/*) ngx_prefix="$OPENSSL/.openssl" ;;
|
||||||
|
*) ngx_prefix="$PWD/$OPENSSL/.openssl" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
$OPENSSL/.openssl/include/openssl/ssl.h: $NGX_MAKEFILE
|
||||||
|
cd $OPENSSL \\
|
||||||
|
&& if [ -f Makefile ]; then \$(MAKE) clean; fi \\
|
||||||
|
&& ./config --prefix=$ngx_prefix no-shared no-threads $OPENSSL_OPT \\
|
||||||
|
&& \$(MAKE) \\
|
||||||
|
&& \$(MAKE) install_sw LIBDIR=lib
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
@ -0,0 +1,18 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
all:
|
||||||
|
cd $(OPENSSL)
|
||||||
|
|
||||||
|
perl Configure BC-32 no-shared --prefix=openssl $(OPENSSL_OPT)
|
||||||
|
|
||||||
|
ms\do_nasm
|
||||||
|
|
||||||
|
$(MAKE) -f ms\bcb.mak
|
||||||
|
$(MAKE) -f ms\bcb.mak install
|
||||||
|
|
||||||
|
# Borland's make does not expand "[ch]" in
|
||||||
|
# copy "inc32\openssl\*.[ch]" "openssl\include\openssl"
|
||||||
|
copy inc32\openssl\*.h openssl\include\openssl
|
@ -0,0 +1,21 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
all:
|
||||||
|
cd $(OPENSSL)
|
||||||
|
|
||||||
|
perl Configure VC-WIN32 no-shared \
|
||||||
|
--prefix="%cd%/openssl" \
|
||||||
|
--openssldir="%cd%/openssl/ssl" \
|
||||||
|
$(OPENSSL_OPT)
|
||||||
|
|
||||||
|
if exist ms\do_ms.bat ( \
|
||||||
|
ms\do_ms \
|
||||||
|
&& $(MAKE) -f ms\nt.mak \
|
||||||
|
&& $(MAKE) -f ms\nt.mak install \
|
||||||
|
) else ( \
|
||||||
|
$(MAKE) \
|
||||||
|
&& $(MAKE) install_sw \
|
||||||
|
)
|
@ -0,0 +1,203 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
if [ $PCRE != NONE ]; then
|
||||||
|
CORE_INCS="$CORE_INCS $PCRE"
|
||||||
|
|
||||||
|
case "$NGX_CC_NAME" in
|
||||||
|
|
||||||
|
msvc | owc | bcc)
|
||||||
|
have=NGX_PCRE . auto/have
|
||||||
|
have=PCRE_STATIC . auto/have
|
||||||
|
CORE_DEPS="$CORE_DEPS $PCRE/pcre.h"
|
||||||
|
LINK_DEPS="$LINK_DEPS $PCRE/pcre.lib"
|
||||||
|
CORE_LIBS="$CORE_LIBS $PCRE/pcre.lib"
|
||||||
|
;;
|
||||||
|
|
||||||
|
icc)
|
||||||
|
have=NGX_PCRE . auto/have
|
||||||
|
CORE_DEPS="$CORE_DEPS $PCRE/pcre.h"
|
||||||
|
|
||||||
|
LINK_DEPS="$LINK_DEPS $PCRE/.libs/libpcre.a"
|
||||||
|
|
||||||
|
echo $ngx_n "checking for PCRE library ...$ngx_c"
|
||||||
|
|
||||||
|
if [ -f $PCRE/pcre.h ]; then
|
||||||
|
ngx_pcre_ver=`grep PCRE_MAJOR $PCRE/pcre.h \
|
||||||
|
| sed -e 's/^.*PCRE_MAJOR.* \(.*\)$/\1/'`
|
||||||
|
|
||||||
|
else if [ -f $PCRE/configure.in ]; then
|
||||||
|
ngx_pcre_ver=`grep PCRE_MAJOR= $PCRE/configure.in \
|
||||||
|
| sed -e 's/^.*=\(.*\)$/\1/'`
|
||||||
|
|
||||||
|
else
|
||||||
|
ngx_pcre_ver=`grep pcre_major, $PCRE/configure.ac \
|
||||||
|
| sed -e 's/^.*pcre_major,.*\[\(.*\)\].*$/\1/'`
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo " $ngx_pcre_ver major version found"
|
||||||
|
|
||||||
|
# to allow -ipo optimization we link with the *.o but not library
|
||||||
|
|
||||||
|
case "$ngx_pcre_ver" in
|
||||||
|
4|5)
|
||||||
|
CORE_LIBS="$CORE_LIBS $PCRE/pcre.o"
|
||||||
|
;;
|
||||||
|
|
||||||
|
6)
|
||||||
|
CORE_LIBS="$CORE_LIBS $PCRE/pcre_chartables.o"
|
||||||
|
CORE_LIBS="$CORE_LIBS $PCRE/pcre_compile.o"
|
||||||
|
CORE_LIBS="$CORE_LIBS $PCRE/pcre_exec.o"
|
||||||
|
CORE_LIBS="$CORE_LIBS $PCRE/pcre_fullinfo.o"
|
||||||
|
CORE_LIBS="$CORE_LIBS $PCRE/pcre_globals.o"
|
||||||
|
CORE_LIBS="$CORE_LIBS $PCRE/pcre_tables.o"
|
||||||
|
CORE_LIBS="$CORE_LIBS $PCRE/pcre_try_flipped.o"
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
CORE_LIBS="$CORE_LIBS $PCRE/pcre_chartables.o"
|
||||||
|
CORE_LIBS="$CORE_LIBS $PCRE/pcre_compile.o"
|
||||||
|
CORE_LIBS="$CORE_LIBS $PCRE/pcre_exec.o"
|
||||||
|
CORE_LIBS="$CORE_LIBS $PCRE/pcre_fullinfo.o"
|
||||||
|
CORE_LIBS="$CORE_LIBS $PCRE/pcre_globals.o"
|
||||||
|
CORE_LIBS="$CORE_LIBS $PCRE/pcre_tables.o"
|
||||||
|
CORE_LIBS="$CORE_LIBS $PCRE/pcre_try_flipped.o"
|
||||||
|
CORE_LIBS="$CORE_LIBS $PCRE/pcre_newline.o"
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
have=NGX_PCRE . auto/have
|
||||||
|
|
||||||
|
if [ "$NGX_PLATFORM" = win32 ]; then
|
||||||
|
have=PCRE_STATIC . auto/have
|
||||||
|
fi
|
||||||
|
|
||||||
|
CORE_DEPS="$CORE_DEPS $PCRE/pcre.h"
|
||||||
|
LINK_DEPS="$LINK_DEPS $PCRE/.libs/libpcre.a"
|
||||||
|
CORE_LIBS="$CORE_LIBS $PCRE/.libs/libpcre.a"
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
if [ $PCRE_JIT = YES ]; then
|
||||||
|
have=NGX_HAVE_PCRE_JIT . auto/have
|
||||||
|
PCRE_CONF_OPT="$PCRE_CONF_OPT --enable-jit"
|
||||||
|
fi
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
if [ "$NGX_PLATFORM" != win32 ]; then
|
||||||
|
|
||||||
|
PCRE=NO
|
||||||
|
|
||||||
|
ngx_feature="PCRE library"
|
||||||
|
ngx_feature_name="NGX_PCRE"
|
||||||
|
ngx_feature_run=no
|
||||||
|
ngx_feature_incs="#include <pcre.h>"
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs="-lpcre"
|
||||||
|
ngx_feature_test="pcre *re;
|
||||||
|
re = pcre_compile(NULL, 0, NULL, 0, NULL);
|
||||||
|
if (re == NULL) return 1"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
|
||||||
|
# FreeBSD port
|
||||||
|
|
||||||
|
ngx_feature="PCRE library in /usr/local/"
|
||||||
|
ngx_feature_path="/usr/local/include"
|
||||||
|
|
||||||
|
if [ $NGX_RPATH = YES ]; then
|
||||||
|
ngx_feature_libs="-R/usr/local/lib -L/usr/local/lib -lpcre"
|
||||||
|
else
|
||||||
|
ngx_feature_libs="-L/usr/local/lib -lpcre"
|
||||||
|
fi
|
||||||
|
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
|
||||||
|
# RedHat RPM, Solaris package
|
||||||
|
|
||||||
|
ngx_feature="PCRE library in /usr/include/pcre/"
|
||||||
|
ngx_feature_path="/usr/include/pcre"
|
||||||
|
ngx_feature_libs="-lpcre"
|
||||||
|
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
|
||||||
|
# NetBSD port
|
||||||
|
|
||||||
|
ngx_feature="PCRE library in /usr/pkg/"
|
||||||
|
ngx_feature_path="/usr/pkg/include"
|
||||||
|
|
||||||
|
if [ $NGX_RPATH = YES ]; then
|
||||||
|
ngx_feature_libs="-R/usr/pkg/lib -L/usr/pkg/lib -lpcre"
|
||||||
|
else
|
||||||
|
ngx_feature_libs="-L/usr/pkg/lib -lpcre"
|
||||||
|
fi
|
||||||
|
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
|
||||||
|
# MacPorts
|
||||||
|
|
||||||
|
ngx_feature="PCRE library in /opt/local/"
|
||||||
|
ngx_feature_path="/opt/local/include"
|
||||||
|
|
||||||
|
if [ $NGX_RPATH = YES ]; then
|
||||||
|
ngx_feature_libs="-R/opt/local/lib -L/opt/local/lib -lpcre"
|
||||||
|
else
|
||||||
|
ngx_feature_libs="-L/opt/local/lib -lpcre"
|
||||||
|
fi
|
||||||
|
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $ngx_found = yes ]; then
|
||||||
|
CORE_INCS="$CORE_INCS $ngx_feature_path"
|
||||||
|
CORE_LIBS="$CORE_LIBS $ngx_feature_libs"
|
||||||
|
PCRE=YES
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $PCRE = YES ]; then
|
||||||
|
ngx_feature="PCRE JIT support"
|
||||||
|
ngx_feature_name="NGX_HAVE_PCRE_JIT"
|
||||||
|
ngx_feature_test="int jit = 0;
|
||||||
|
pcre_free_study(NULL);
|
||||||
|
pcre_config(PCRE_CONFIG_JIT, &jit);
|
||||||
|
if (jit != 1) return 1;"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
if [ $ngx_found = yes ]; then
|
||||||
|
PCRE_JIT=YES
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $PCRE != YES ]; then
|
||||||
|
cat << END
|
||||||
|
|
||||||
|
$0: error: the HTTP rewrite module requires the PCRE library.
|
||||||
|
You can either disable the module by using --without-http_rewrite_module
|
||||||
|
option, or install the PCRE library into the system, or build the PCRE library
|
||||||
|
statically from the source with nginx by using --with-pcre=<path> option.
|
||||||
|
|
||||||
|
END
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
fi
|
@ -0,0 +1,64 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
case "$NGX_CC_NAME" in
|
||||||
|
|
||||||
|
msvc)
|
||||||
|
ngx_makefile=makefile.msvc
|
||||||
|
ngx_opt="CPU_OPT=\"$CPU_OPT\" LIBC=$LIBC"
|
||||||
|
ngx_pcre="PCRE=\"$PCRE\""
|
||||||
|
;;
|
||||||
|
|
||||||
|
owc)
|
||||||
|
ngx_makefile=makefile.owc
|
||||||
|
ngx_opt="CPU_OPT=\"$CPU_OPT\""
|
||||||
|
ngx_pcre=`echo PCRE=\"$PCRE\" | sed -e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
;;
|
||||||
|
|
||||||
|
bcc)
|
||||||
|
ngx_makefile=makefile.bcc
|
||||||
|
ngx_opt="-DCPU_OPT=\"$CPU_OPT\""
|
||||||
|
ngx_pcre=`echo \-DPCRE=\"$PCRE\" | sed -e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
ngx_makefile=
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
if [ -n "$ngx_makefile" ]; then
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
`echo "$PCRE/pcre.lib: $PCRE/pcre.h $NGX_MAKEFILE" \
|
||||||
|
| sed -e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
\$(MAKE) -f auto/lib/pcre/$ngx_makefile $ngx_pcre $ngx_opt
|
||||||
|
|
||||||
|
`echo "$PCRE/pcre.h:" | sed -e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
\$(MAKE) -f auto/lib/pcre/$ngx_makefile $ngx_pcre pcre.h
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
$PCRE/pcre.h: $PCRE/Makefile
|
||||||
|
|
||||||
|
$PCRE/Makefile: $NGX_MAKEFILE
|
||||||
|
cd $PCRE \\
|
||||||
|
&& if [ -f Makefile ]; then \$(MAKE) distclean; fi \\
|
||||||
|
&& CC="\$(CC)" CFLAGS="$PCRE_OPT" \\
|
||||||
|
./configure --disable-shared $PCRE_CONF_OPT
|
||||||
|
|
||||||
|
$PCRE/.libs/libpcre.a: $PCRE/Makefile
|
||||||
|
cd $PCRE \\
|
||||||
|
&& \$(MAKE) libpcre.la
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
fi
|
@ -0,0 +1,27 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
CFLAGS = -q -O2 -tWM -w-8004 $(CPU_OPT)
|
||||||
|
PCREFLAGS = -DHAVE_CONFIG_H -DPCRE_STATIC -DPOSIX_MALLOC_THRESHOLD=10 \
|
||||||
|
-DSUPPORT_PCRE8 -DHAVE_MEMMOVE
|
||||||
|
|
||||||
|
|
||||||
|
pcre.lib:
|
||||||
|
cd $(PCRE)
|
||||||
|
|
||||||
|
bcc32 -c $(CFLAGS) -I. $(PCREFLAGS) pcre_*.c
|
||||||
|
|
||||||
|
copy /y nul pcre.lst
|
||||||
|
for %n in (*.obj) do @echo +%n ^^& >> pcre.lst
|
||||||
|
echo + >> pcre.lst
|
||||||
|
|
||||||
|
tlib pcre.lib @pcre.lst
|
||||||
|
|
||||||
|
pcre.h:
|
||||||
|
cd $(PCRE)
|
||||||
|
|
||||||
|
copy /y pcre.h.generic pcre.h
|
||||||
|
copy /y config.h.generic config.h
|
||||||
|
copy /y pcre_chartables.c.dist pcre_chartables.c
|
@ -0,0 +1,23 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
CFLAGS = -O2 -Ob1 -Oi -Gs $(LIBC) $(CPU_OPT)
|
||||||
|
PCREFLAGS = -DHAVE_CONFIG_H -DPCRE_STATIC -DPOSIX_MALLOC_THRESHOLD=10 \
|
||||||
|
-DSUPPORT_PCRE8 -DHAVE_MEMMOVE
|
||||||
|
|
||||||
|
|
||||||
|
pcre.lib:
|
||||||
|
cd $(PCRE)
|
||||||
|
|
||||||
|
cl -nologo -c $(CFLAGS) -I . $(PCREFLAGS) pcre_*.c
|
||||||
|
|
||||||
|
link -lib -out:pcre.lib -verbose:lib pcre_*.obj
|
||||||
|
|
||||||
|
pcre.h:
|
||||||
|
cd $(PCRE)
|
||||||
|
|
||||||
|
copy /y pcre.h.generic pcre.h
|
||||||
|
copy /y config.h.generic config.h
|
||||||
|
copy /y pcre_chartables.c.dist pcre_chartables.c
|
@ -0,0 +1,25 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
CFLAGS = -c -zq -bt=nt -ot -op -oi -oe -s -bm $(CPU_OPT)
|
||||||
|
PCREFLAGS = -DHAVE_CONFIG_H -DPCRE_STATIC -DPOSIX_MALLOC_THRESHOLD=10 &
|
||||||
|
-DSUPPORT_PCRE8 -DHAVE_MEMMOVE
|
||||||
|
|
||||||
|
|
||||||
|
pcre.lib:
|
||||||
|
cd $(PCRE)
|
||||||
|
|
||||||
|
wcl386 $(CFLAGS) -i=. $(PCREFLAGS) pcre_*.c
|
||||||
|
|
||||||
|
dir /b *.obj > pcre.lst
|
||||||
|
|
||||||
|
wlib -n pcre.lib @pcre.lst
|
||||||
|
|
||||||
|
pcre.h:
|
||||||
|
cd $(PCRE)
|
||||||
|
|
||||||
|
copy /y pcre.h.generic pcre.h
|
||||||
|
copy /y config.h.generic config.h
|
||||||
|
copy /y pcre_chartables.c.dist pcre_chartables.c
|
@ -0,0 +1,83 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
echo "checking for perl"
|
||||||
|
|
||||||
|
|
||||||
|
NGX_PERL_VER=`$NGX_PERL -v 2>&1 | grep '^This is perl' 2>&1 \
|
||||||
|
| sed -e 's/^This is perl, \(.*\)/\1/'`
|
||||||
|
|
||||||
|
if test -n "$NGX_PERL_VER"; then
|
||||||
|
echo " + perl version: $NGX_PERL_VER"
|
||||||
|
|
||||||
|
if [ "`$NGX_PERL -e 'use 5.008006; print "OK"'`" != "OK" ]; then
|
||||||
|
echo
|
||||||
|
echo "$0: error: perl 5.8.6 or higher is required"
|
||||||
|
echo
|
||||||
|
|
||||||
|
exit 1;
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "`$NGX_PERL -MExtUtils::Embed -e 'print "OK"'`" != "OK" ]; then
|
||||||
|
echo
|
||||||
|
echo "$0: error: perl module ExtUtils::Embed is required"
|
||||||
|
echo
|
||||||
|
|
||||||
|
exit 1;
|
||||||
|
fi
|
||||||
|
|
||||||
|
NGX_PM_CFLAGS=`$NGX_PERL -MExtUtils::Embed -e ccopts`
|
||||||
|
NGX_PM_LDFLAGS=`$NGX_PERL -MConfig -e 'print $Config{lddlflags}'`
|
||||||
|
|
||||||
|
NGX_PERL_CFLAGS="$CFLAGS `$NGX_PERL -MExtUtils::Embed -e ccopts`"
|
||||||
|
|
||||||
|
# gcc 4.1/4.2 warn about unused values in pTHX_
|
||||||
|
NGX_PERL_CFLAGS=`echo $NGX_PERL_CFLAGS \
|
||||||
|
| sed -e 's/-Wunused-value/-Wno-unused-value/'`
|
||||||
|
# icc8 warns 'declaration hides parameter "my_perl"' in ENTER and LEAVE
|
||||||
|
NGX_PERL_CFLAGS=`echo $NGX_PERL_CFLAGS \
|
||||||
|
| sed -e 's/-wd171/-wd171 -wd1599/'`
|
||||||
|
|
||||||
|
ngx_perl_ldopts=`$NGX_PERL -MExtUtils::Embed -e ldopts`
|
||||||
|
|
||||||
|
ngx_perl_dlext=`$NGX_PERL -MConfig -e 'print $Config{dlext}'`
|
||||||
|
ngx_perl_libdir="src/http/modules/perl/blib/arch/auto"
|
||||||
|
ngx_perl_module="$ngx_perl_libdir/nginx/nginx.$ngx_perl_dlext"
|
||||||
|
|
||||||
|
if $NGX_PERL -V:usemultiplicity | grep define > /dev/null; then
|
||||||
|
have=NGX_HAVE_PERL_MULTIPLICITY . auto/have
|
||||||
|
echo " + perl interpreter multiplicity found"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if $NGX_PERL -V:useithreads | grep undef > /dev/null; then
|
||||||
|
# FreeBSD port wants to link with -pthread non-threaded perl
|
||||||
|
ngx_perl_ldopts=`echo $ngx_perl_ldopts | sed 's/ -pthread//'`
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$NGX_SYSTEM" = "Darwin" ]; then
|
||||||
|
# OS X system perl wants to link universal binaries
|
||||||
|
ngx_perl_ldopts=`echo $ngx_perl_ldopts \
|
||||||
|
| sed -e 's/-arch i386//' -e 's/-arch x86_64//'`
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $USE_PERL = YES ]; then
|
||||||
|
CORE_LINK="$CORE_LINK $ngx_perl_ldopts"
|
||||||
|
fi
|
||||||
|
|
||||||
|
NGX_LIB_PERL="$ngx_perl_ldopts"
|
||||||
|
|
||||||
|
if test -n "$NGX_PERL_MODULES"; then
|
||||||
|
have=NGX_PERL_MODULES value="(u_char *) \"$NGX_PERL_MODULES\""
|
||||||
|
. auto/define
|
||||||
|
NGX_PERL_MODULES_MAN=$NGX_PERL_MODULES/man3
|
||||||
|
fi
|
||||||
|
|
||||||
|
else
|
||||||
|
echo
|
||||||
|
echo "$0: error: perl 5.8.6 or higher is required"
|
||||||
|
echo
|
||||||
|
|
||||||
|
exit 1;
|
||||||
|
fi
|
@ -0,0 +1,46 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
$NGX_OBJS/src/http/modules/perl/ngx_http_perl_module.o: \\
|
||||||
|
$NGX_OBJS/$ngx_perl_module
|
||||||
|
|
||||||
|
$NGX_OBJS/$ngx_perl_module: \\
|
||||||
|
\$(CORE_DEPS) \$(HTTP_DEPS) \\
|
||||||
|
src/http/modules/perl/ngx_http_perl_module.h \\
|
||||||
|
$NGX_OBJS/src/http/modules/perl/Makefile
|
||||||
|
cd $NGX_OBJS/src/http/modules/perl && \$(MAKE)
|
||||||
|
|
||||||
|
rm -rf $NGX_OBJS/install_perl
|
||||||
|
|
||||||
|
|
||||||
|
$NGX_OBJS/src/http/modules/perl/Makefile: \\
|
||||||
|
$NGX_AUTO_CONFIG_H \\
|
||||||
|
src/core/nginx.h \\
|
||||||
|
src/http/modules/perl/Makefile.PL \\
|
||||||
|
src/http/modules/perl/nginx.pm \\
|
||||||
|
src/http/modules/perl/nginx.xs \\
|
||||||
|
src/http/modules/perl/typemap
|
||||||
|
grep 'define NGINX_VERSION' src/core/nginx.h \\
|
||||||
|
| sed -e 's/^.*"\(.*\)".*/\1/' > \\
|
||||||
|
$NGX_OBJS/src/http/modules/perl/version
|
||||||
|
sed "s/%%VERSION%%/\`cat $NGX_OBJS/src/http/modules/perl/version\`/" \\
|
||||||
|
src/http/modules/perl/nginx.pm > \\
|
||||||
|
$NGX_OBJS/src/http/modules/perl/nginx.pm
|
||||||
|
cp -p src/http/modules/perl/nginx.xs $NGX_OBJS/src/http/modules/perl/
|
||||||
|
cp -p src/http/modules/perl/typemap $NGX_OBJS/src/http/modules/perl/
|
||||||
|
cp -p src/http/modules/perl/Makefile.PL $NGX_OBJS/src/http/modules/perl/
|
||||||
|
|
||||||
|
cd $NGX_OBJS/src/http/modules/perl \\
|
||||||
|
&& NGX_PM_CFLAGS="\$(NGX_PM_CFLAGS) -g $NGX_CC_OPT" \\
|
||||||
|
NGX_PM_LDFLAGS="$NGX_LD_OPT \$(NGX_PM_LDFLAGS)" \\
|
||||||
|
NGX_INCS="$CORE_INCS $NGX_OBJS $HTTP_INCS" \\
|
||||||
|
NGX_DEPS="\$(CORE_DEPS) \$(HTTP_DEPS)" \\
|
||||||
|
$NGX_PERL Makefile.PL \\
|
||||||
|
LIB=$NGX_PERL_MODULES \\
|
||||||
|
INSTALLSITEMAN3DIR=$NGX_PERL_MODULES_MAN
|
||||||
|
|
||||||
|
END
|
@ -0,0 +1,79 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
if [ $ZLIB != NONE ]; then
|
||||||
|
CORE_INCS="$CORE_INCS $ZLIB"
|
||||||
|
|
||||||
|
case "$NGX_CC_NAME" in
|
||||||
|
|
||||||
|
msvc | owc | bcc)
|
||||||
|
have=NGX_ZLIB . auto/have
|
||||||
|
LINK_DEPS="$LINK_DEPS $ZLIB/zlib.lib"
|
||||||
|
CORE_LIBS="$CORE_LIBS $ZLIB/zlib.lib"
|
||||||
|
;;
|
||||||
|
|
||||||
|
icc)
|
||||||
|
have=NGX_ZLIB . auto/have
|
||||||
|
LINK_DEPS="$LINK_DEPS $ZLIB/libz.a"
|
||||||
|
|
||||||
|
# to allow -ipo optimization we link with the *.o but not library
|
||||||
|
CORE_LIBS="$CORE_LIBS $ZLIB/adler32.o"
|
||||||
|
CORE_LIBS="$CORE_LIBS $ZLIB/crc32.o"
|
||||||
|
CORE_LIBS="$CORE_LIBS $ZLIB/deflate.o"
|
||||||
|
CORE_LIBS="$CORE_LIBS $ZLIB/trees.o"
|
||||||
|
CORE_LIBS="$CORE_LIBS $ZLIB/zutil.o"
|
||||||
|
CORE_LIBS="$CORE_LIBS $ZLIB/compress.o"
|
||||||
|
|
||||||
|
if [ $ZLIB_ASM != NO ]; then
|
||||||
|
CORE_LIBS="$CORE_LIBS $ZLIB/match.o"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
have=NGX_ZLIB . auto/have
|
||||||
|
LINK_DEPS="$LINK_DEPS $ZLIB/libz.a"
|
||||||
|
CORE_LIBS="$CORE_LIBS $ZLIB/libz.a"
|
||||||
|
#CORE_LIBS="$CORE_LIBS -L $ZLIB -lz"
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
if [ "$NGX_PLATFORM" != win32 ]; then
|
||||||
|
ZLIB=NO
|
||||||
|
|
||||||
|
# FreeBSD, Solaris, Linux
|
||||||
|
|
||||||
|
ngx_feature="zlib library"
|
||||||
|
ngx_feature_name="NGX_ZLIB"
|
||||||
|
ngx_feature_run=no
|
||||||
|
ngx_feature_incs="#include <zlib.h>"
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs="-lz"
|
||||||
|
ngx_feature_test="z_stream z; deflate(&z, Z_NO_FLUSH)"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
|
||||||
|
if [ $ngx_found = yes ]; then
|
||||||
|
CORE_LIBS="$CORE_LIBS $ngx_feature_libs"
|
||||||
|
ZLIB=YES
|
||||||
|
ngx_found=no
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $ZLIB != YES ]; then
|
||||||
|
cat << END
|
||||||
|
|
||||||
|
$0: error: the HTTP gzip module requires the zlib library.
|
||||||
|
You can either disable the module by using --without-http_gzip_module
|
||||||
|
option, or install the zlib library into the system, or build the zlib library
|
||||||
|
statically from the source with nginx by using --with-zlib=<path> option.
|
||||||
|
|
||||||
|
END
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
fi
|
@ -0,0 +1,135 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
case "$NGX_CC_NAME" in
|
||||||
|
|
||||||
|
msvc)
|
||||||
|
ngx_makefile=makefile.msvc
|
||||||
|
ngx_opt="CPU_OPT=\"$CPU_OPT\" LIBC=$LIBC"
|
||||||
|
ngx_zlib="ZLIB=\"$ZLIB\""
|
||||||
|
|
||||||
|
;;
|
||||||
|
|
||||||
|
owc)
|
||||||
|
ngx_makefile=makefile.owc
|
||||||
|
ngx_opt="CPU_OPT=\"$CPU_OPT\""
|
||||||
|
ngx_zlib=`echo ZLIB=\"$ZLIB\" | sed -e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
;;
|
||||||
|
|
||||||
|
bcc)
|
||||||
|
ngx_makefile=makefile.bcc
|
||||||
|
ngx_opt="-DCPU_OPT=\"$CPU_OPT\""
|
||||||
|
ngx_zlib=`echo \-DZLIB=\"$ZLIB\" | sed -e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
ngx_makefile=
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
done=NO
|
||||||
|
|
||||||
|
|
||||||
|
case "$NGX_PLATFORM" in
|
||||||
|
|
||||||
|
win32)
|
||||||
|
|
||||||
|
if [ -n "$ngx_makefile" ]; then
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
`echo "$ZLIB/zlib.lib: $NGX_MAKEFILE" | sed -e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
\$(MAKE) -f auto/lib/zlib/$ngx_makefile $ngx_opt $ngx_zlib
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
$ZLIB/libz.a: $NGX_MAKEFILE
|
||||||
|
cd $ZLIB \\
|
||||||
|
&& \$(MAKE) distclean \\
|
||||||
|
&& \$(MAKE) -f win32/Makefile.gcc \\
|
||||||
|
CFLAGS="$ZLIB_OPT" CC="\$(CC)" \\
|
||||||
|
libz.a
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
done=YES
|
||||||
|
;;
|
||||||
|
|
||||||
|
# FreeBSD: i386
|
||||||
|
# Linux: i686
|
||||||
|
|
||||||
|
*:i386 | *:i686)
|
||||||
|
case $ZLIB_ASM in
|
||||||
|
pentium)
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
$ZLIB/libz.a: $NGX_MAKEFILE
|
||||||
|
cd $ZLIB \\
|
||||||
|
&& \$(MAKE) distclean \\
|
||||||
|
&& cp contrib/asm586/match.S . \\
|
||||||
|
&& CFLAGS="$ZLIB_OPT -DASMV" CC="\$(CC)" \\
|
||||||
|
./configure \\
|
||||||
|
&& \$(MAKE) OBJA=match.o libz.a
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
done=YES
|
||||||
|
;;
|
||||||
|
|
||||||
|
pentiumpro)
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
$ZLIB/libz.a: $NGX_MAKEFILE
|
||||||
|
cd $ZLIB \\
|
||||||
|
&& \$(MAKE) distclean \\
|
||||||
|
&& cp contrib/asm686/match.S . \\
|
||||||
|
&& CFLAGS="$ZLIB_OPT -DASMV" CC="\$(CC)" \\
|
||||||
|
./configure \\
|
||||||
|
&& \$(MAKE) OBJA=match.o libz.a
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
done=YES
|
||||||
|
;;
|
||||||
|
|
||||||
|
NO)
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo "$0: error: invalid --with-zlib-asm=$ZLIB_ASM option."
|
||||||
|
echo "The valid values are \"pentium\" and \"pentiumpro\" only".
|
||||||
|
echo
|
||||||
|
|
||||||
|
exit 1;
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
if [ $done = NO ]; then
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
$ZLIB/libz.a: $NGX_MAKEFILE
|
||||||
|
cd $ZLIB \\
|
||||||
|
&& \$(MAKE) distclean \\
|
||||||
|
&& CFLAGS="$ZLIB_OPT" CC="\$(CC)" \\
|
||||||
|
./configure \\
|
||||||
|
&& \$(MAKE) libz.a
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
fi
|
@ -0,0 +1,17 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
CFLAGS = -q -O2 -tWM -w-8004 -w-8012 $(CPU_OPT)
|
||||||
|
|
||||||
|
zlib.lib:
|
||||||
|
cd $(ZLIB)
|
||||||
|
|
||||||
|
bcc32 -c $(CFLAGS) adler32.c crc32.c deflate.c \
|
||||||
|
trees.c zutil.c compress.c \
|
||||||
|
inflate.c inffast.c inftrees.c
|
||||||
|
|
||||||
|
tlib zlib.lib +adler32.obj +crc32.obj +deflate.obj \
|
||||||
|
+trees.obj +zutil.obj +compress.obj \
|
||||||
|
+inflate.obj +inffast.obj +inftrees.obj
|
@ -0,0 +1,17 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
CFLAGS = -nologo -O2 -Ob1 -Oi -Gs $(LIBC) $(CPU_OPT)
|
||||||
|
|
||||||
|
zlib.lib:
|
||||||
|
cd $(ZLIB)
|
||||||
|
|
||||||
|
cl -c $(CFLAGS) adler32.c crc32.c deflate.c \
|
||||||
|
trees.c zutil.c compress.c \
|
||||||
|
inflate.c inffast.c inftrees.c
|
||||||
|
|
||||||
|
link -lib -out:zlib.lib adler32.obj crc32.obj deflate.obj \
|
||||||
|
trees.obj zutil.obj compress.obj \
|
||||||
|
inflate.obj inffast.obj inftrees.obj
|
@ -0,0 +1,14 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
CFLAGS = -zq -bt=nt -ot -op -oi -oe -s -bm $(CPU_OPT)
|
||||||
|
|
||||||
|
zlib.lib:
|
||||||
|
cd $(ZLIB)
|
||||||
|
|
||||||
|
wcl386 -c $(CFLAGS) adler32.c crc32.c deflate.c trees.c zutil.c &
|
||||||
|
compress.c inflate.c inffast.c inftrees.c
|
||||||
|
wlib -n zlib.lib adler32.obj crc32.obj deflate.obj trees.obj &
|
||||||
|
zutil.obj compress.obj inflate.obj inffast.obj inftrees.obj
|
@ -0,0 +1,672 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
echo "creating $NGX_MAKEFILE"
|
||||||
|
|
||||||
|
mkdir -p $NGX_OBJS/src/core $NGX_OBJS/src/event $NGX_OBJS/src/event/modules \
|
||||||
|
$NGX_OBJS/src/os/unix $NGX_OBJS/src/os/win32 \
|
||||||
|
$NGX_OBJS/src/http $NGX_OBJS/src/http/v2 $NGX_OBJS/src/http/modules \
|
||||||
|
$NGX_OBJS/src/http/modules/perl \
|
||||||
|
$NGX_OBJS/src/mail \
|
||||||
|
$NGX_OBJS/src/stream \
|
||||||
|
$NGX_OBJS/src/misc
|
||||||
|
|
||||||
|
|
||||||
|
ngx_objs_dir=$NGX_OBJS$ngx_regex_dirsep
|
||||||
|
ngx_use_pch=`echo $NGX_USE_PCH | sed -e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
|
||||||
|
|
||||||
|
cat << END > $NGX_MAKEFILE
|
||||||
|
|
||||||
|
CC = $CC
|
||||||
|
CFLAGS = $CFLAGS
|
||||||
|
CPP = $CPP
|
||||||
|
LINK = $LINK
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
|
if test -n "$NGX_PERL_CFLAGS"; then
|
||||||
|
echo NGX_PERL_CFLAGS = $NGX_PERL_CFLAGS >> $NGX_MAKEFILE
|
||||||
|
echo NGX_PM_CFLAGS = $NGX_PM_CFLAGS >> $NGX_MAKEFILE
|
||||||
|
echo NGX_PM_LDFLAGS = $NGX_PM_LDFLAGS >> $NGX_MAKEFILE
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# ALL_INCS, required by the addons and by OpenWatcom C precompiled headers
|
||||||
|
|
||||||
|
ngx_incs=`echo $CORE_INCS $NGX_OBJS $HTTP_INCS $MAIL_INCS $STREAM_INCS\
|
||||||
|
| sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont$ngx_include_opt\1/g" \
|
||||||
|
-e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
ALL_INCS = $ngx_include_opt$ngx_incs
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
|
ngx_all_srcs="$CORE_SRCS"
|
||||||
|
|
||||||
|
|
||||||
|
# the core dependencies and include paths
|
||||||
|
|
||||||
|
ngx_deps=`echo $CORE_DEPS $NGX_AUTO_CONFIG_H $NGX_PCH \
|
||||||
|
| sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont\1/g" \
|
||||||
|
-e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
|
||||||
|
ngx_incs=`echo $CORE_INCS $NGX_OBJS \
|
||||||
|
| sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont$ngx_include_opt\1/g" \
|
||||||
|
-e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
CORE_DEPS = $ngx_deps
|
||||||
|
|
||||||
|
|
||||||
|
CORE_INCS = $ngx_include_opt$ngx_incs
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
|
# the http dependencies and include paths
|
||||||
|
|
||||||
|
if [ $HTTP = YES ]; then
|
||||||
|
|
||||||
|
ngx_all_srcs="$ngx_all_srcs $HTTP_SRCS"
|
||||||
|
|
||||||
|
ngx_deps=`echo $HTTP_DEPS \
|
||||||
|
| sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont\1/g" \
|
||||||
|
-e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
|
||||||
|
ngx_incs=`echo $HTTP_INCS \
|
||||||
|
| sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont$ngx_include_opt\1/g" \
|
||||||
|
-e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
HTTP_DEPS = $ngx_deps
|
||||||
|
|
||||||
|
|
||||||
|
HTTP_INCS = $ngx_include_opt$ngx_incs
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# the mail dependencies and include paths
|
||||||
|
|
||||||
|
if [ $MAIL != NO ]; then
|
||||||
|
|
||||||
|
if [ $MAIL = YES ]; then
|
||||||
|
ngx_all_srcs="$ngx_all_srcs $MAIL_SRCS"
|
||||||
|
fi
|
||||||
|
|
||||||
|
ngx_deps=`echo $MAIL_DEPS \
|
||||||
|
| sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont\1/g" \
|
||||||
|
-e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
|
||||||
|
ngx_incs=`echo $MAIL_INCS \
|
||||||
|
| sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont$ngx_include_opt\1/g" \
|
||||||
|
-e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
MAIL_DEPS = $ngx_deps
|
||||||
|
|
||||||
|
|
||||||
|
MAIL_INCS = $ngx_include_opt$ngx_incs
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# the stream dependencies and include paths
|
||||||
|
|
||||||
|
if [ $STREAM != NO ]; then
|
||||||
|
|
||||||
|
if [ $STREAM = YES ]; then
|
||||||
|
ngx_all_srcs="$ngx_all_srcs $STREAM_SRCS"
|
||||||
|
fi
|
||||||
|
|
||||||
|
ngx_deps=`echo $STREAM_DEPS \
|
||||||
|
| sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont\1/g" \
|
||||||
|
-e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
|
||||||
|
ngx_incs=`echo $STREAM_INCS \
|
||||||
|
| sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont$ngx_include_opt\1/g" \
|
||||||
|
-e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
STREAM_DEPS = $ngx_deps
|
||||||
|
|
||||||
|
|
||||||
|
STREAM_INCS = $ngx_include_opt$ngx_incs
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
ngx_all_srcs="$ngx_all_srcs $MISC_SRCS"
|
||||||
|
|
||||||
|
|
||||||
|
if test -n "$NGX_ADDON_SRCS$DYNAMIC_MODULES"; then
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
ADDON_DEPS = \$(CORE_DEPS) $NGX_ADDON_DEPS
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# nginx
|
||||||
|
|
||||||
|
ngx_all_srcs=`echo $ngx_all_srcs | sed -e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
|
||||||
|
for ngx_src in $NGX_ADDON_SRCS
|
||||||
|
do
|
||||||
|
ngx_obj="addon/`basename \`dirname $ngx_src\``"
|
||||||
|
|
||||||
|
test -d $NGX_OBJS/$ngx_obj || mkdir -p $NGX_OBJS/$ngx_obj
|
||||||
|
|
||||||
|
ngx_obj=`echo $ngx_obj/\`basename $ngx_src\` \
|
||||||
|
| sed -e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
|
||||||
|
ngx_all_srcs="$ngx_all_srcs $ngx_obj"
|
||||||
|
done
|
||||||
|
|
||||||
|
ngx_all_objs=`echo $ngx_all_srcs \
|
||||||
|
| sed -e "s#\([^ ]*\.\)cpp#$NGX_OBJS\/\1$ngx_objext#g" \
|
||||||
|
-e "s#\([^ ]*\.\)cc#$NGX_OBJS\/\1$ngx_objext#g" \
|
||||||
|
-e "s#\([^ ]*\.\)c#$NGX_OBJS\/\1$ngx_objext#g" \
|
||||||
|
-e "s#\([^ ]*\.\)S#$NGX_OBJS\/\1$ngx_objext#g"`
|
||||||
|
|
||||||
|
ngx_modules_c=`echo $NGX_MODULES_C | sed -e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
|
||||||
|
ngx_modules_obj=`echo $ngx_modules_c | sed -e "s/\(.*\.\)c/\1$ngx_objext/"`
|
||||||
|
|
||||||
|
|
||||||
|
if test -n "$NGX_RES"; then
|
||||||
|
ngx_res=$NGX_RES
|
||||||
|
else
|
||||||
|
ngx_res="$NGX_RC $NGX_ICONS"
|
||||||
|
ngx_rcc=`echo $NGX_RCC | sed -e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
fi
|
||||||
|
|
||||||
|
ngx_deps=`echo $ngx_all_objs $ngx_modules_obj $ngx_res $LINK_DEPS \
|
||||||
|
| sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont\1/g" \
|
||||||
|
-e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
|
||||||
|
ngx_objs=`echo $ngx_all_objs $ngx_modules_obj \
|
||||||
|
| sed -e "s/ *\([^ ][^ ]*\)/$ngx_long_regex_cont\1/g" \
|
||||||
|
-e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
|
||||||
|
ngx_libs=
|
||||||
|
if test -n "$NGX_LD_OPT$CORE_LIBS"; then
|
||||||
|
ngx_libs=`echo $NGX_LD_OPT $CORE_LIBS \
|
||||||
|
| sed -e "s/\//$ngx_regex_dirsep/g" -e "s/^/$ngx_long_regex_cont/"`
|
||||||
|
fi
|
||||||
|
|
||||||
|
ngx_link=${CORE_LINK:+`echo $CORE_LINK \
|
||||||
|
| sed -e "s/\//$ngx_regex_dirsep/g" -e "s/^/$ngx_long_regex_cont/"`}
|
||||||
|
|
||||||
|
ngx_main_link=${MAIN_LINK:+`echo $MAIN_LINK \
|
||||||
|
| sed -e "s/\//$ngx_regex_dirsep/g" -e "s/^/$ngx_long_regex_cont/"`}
|
||||||
|
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
build: binary modules manpage
|
||||||
|
|
||||||
|
binary: $NGX_OBJS${ngx_dirsep}nginx$ngx_binext
|
||||||
|
|
||||||
|
$NGX_OBJS${ngx_dirsep}nginx$ngx_binext: $ngx_deps$ngx_spacer
|
||||||
|
\$(LINK) $ngx_long_start$ngx_binout$NGX_OBJS${ngx_dirsep}nginx$ngx_binext$ngx_long_cont$ngx_objs$ngx_libs$ngx_link$ngx_main_link
|
||||||
|
$ngx_rcc
|
||||||
|
$ngx_long_end
|
||||||
|
|
||||||
|
modules:
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
|
# ngx_modules.c
|
||||||
|
|
||||||
|
if test -n "$NGX_PCH"; then
|
||||||
|
ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) $ngx_use_pch \$(ALL_INCS)"
|
||||||
|
else
|
||||||
|
ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) \$(CORE_INCS)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
$ngx_modules_obj: \$(CORE_DEPS)$ngx_cont$ngx_modules_c
|
||||||
|
$ngx_cc$ngx_tab$ngx_objout$ngx_modules_obj$ngx_tab$ngx_modules_c$NGX_AUX
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
|
# the core sources
|
||||||
|
|
||||||
|
for ngx_src in $CORE_SRCS
|
||||||
|
do
|
||||||
|
ngx_src=`echo $ngx_src | sed -e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
ngx_obj=`echo $ngx_src \
|
||||||
|
| sed -e "s#^\(.*\.\)cpp\\$#$ngx_objs_dir\1$ngx_objext#g" \
|
||||||
|
-e "s#^\(.*\.\)cc\\$#$ngx_objs_dir\1$ngx_objext#g" \
|
||||||
|
-e "s#^\(.*\.\)c\\$#$ngx_objs_dir\1$ngx_objext#g" \
|
||||||
|
-e "s#^\(.*\.\)S\\$#$ngx_objs_dir\1$ngx_objext#g"`
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
$ngx_obj: \$(CORE_DEPS)$ngx_cont$ngx_src
|
||||||
|
$ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
# the http sources
|
||||||
|
|
||||||
|
if [ $HTTP = YES ]; then
|
||||||
|
|
||||||
|
if test -n "$NGX_PCH"; then
|
||||||
|
ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) $ngx_use_pch \$(ALL_INCS)"
|
||||||
|
else
|
||||||
|
ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) \$(CORE_INCS) \$(HTTP_INCS)"
|
||||||
|
ngx_perl_cc="\$(CC) $ngx_compile_opt \$(NGX_PERL_CFLAGS)"
|
||||||
|
ngx_perl_cc="$ngx_perl_cc \$(CORE_INCS) \$(HTTP_INCS)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
for ngx_source in $HTTP_SRCS
|
||||||
|
do
|
||||||
|
ngx_src=`echo $ngx_source | sed -e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
ngx_obj=`echo $ngx_src \
|
||||||
|
| sed -e "s#^\(.*\.\)cpp\\$#$ngx_objs_dir\1$ngx_objext#g" \
|
||||||
|
-e "s#^\(.*\.\)cc\\$#$ngx_objs_dir\1$ngx_objext#g" \
|
||||||
|
-e "s#^\(.*\.\)c\\$#$ngx_objs_dir\1$ngx_objext#g" \
|
||||||
|
-e "s#^\(.*\.\)S\\$#$ngx_objs_dir\1$ngx_objext#g"`
|
||||||
|
|
||||||
|
if [ $ngx_source = src/http/modules/perl/ngx_http_perl_module.c ]; then
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
$ngx_obj: \$(CORE_DEPS) \$(HTTP_DEPS)$ngx_cont$ngx_src
|
||||||
|
$ngx_perl_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX
|
||||||
|
|
||||||
|
END
|
||||||
|
else
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
$ngx_obj: \$(CORE_DEPS) \$(HTTP_DEPS)$ngx_cont$ngx_src
|
||||||
|
$ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# the mail sources
|
||||||
|
|
||||||
|
if [ $MAIL = YES ]; then
|
||||||
|
|
||||||
|
if test -n "$NGX_PCH"; then
|
||||||
|
ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) $ngx_use_pch \$(ALL_INCS)"
|
||||||
|
else
|
||||||
|
ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) \$(CORE_INCS) \$(MAIL_INCS)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
for ngx_src in $MAIL_SRCS
|
||||||
|
do
|
||||||
|
ngx_src=`echo $ngx_src | sed -e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
ngx_obj=`echo $ngx_src \
|
||||||
|
| sed -e "s#^\(.*\.\)cpp\\$#$ngx_objs_dir\1$ngx_objext#g" \
|
||||||
|
-e "s#^\(.*\.\)cc\\$#$ngx_objs_dir\1$ngx_objext#g" \
|
||||||
|
-e "s#^\(.*\.\)c\\$#$ngx_objs_dir\1$ngx_objext#g" \
|
||||||
|
-e "s#^\(.*\.\)S\\$#$ngx_objs_dir\1$ngx_objext#g"`
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
$ngx_obj: \$(CORE_DEPS) \$(MAIL_DEPS)$ngx_cont$ngx_src
|
||||||
|
$ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX
|
||||||
|
|
||||||
|
END
|
||||||
|
done
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# the stream sources
|
||||||
|
|
||||||
|
if [ $STREAM = YES ]; then
|
||||||
|
|
||||||
|
if test -n "$NGX_PCH"; then
|
||||||
|
ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) $ngx_use_pch \$(ALL_INCS)"
|
||||||
|
else
|
||||||
|
ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) \$(CORE_INCS) \$(STREAM_INCS)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
for ngx_src in $STREAM_SRCS
|
||||||
|
do
|
||||||
|
ngx_src=`echo $ngx_src | sed -e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
ngx_obj=`echo $ngx_src \
|
||||||
|
| sed -e "s#^\(.*\.\)cpp\\$#$ngx_objs_dir\1$ngx_objext#g" \
|
||||||
|
-e "s#^\(.*\.\)cc\\$#$ngx_objs_dir\1$ngx_objext#g" \
|
||||||
|
-e "s#^\(.*\.\)c\\$#$ngx_objs_dir\1$ngx_objext#g" \
|
||||||
|
-e "s#^\(.*\.\)S\\$#$ngx_objs_dir\1$ngx_objext#g"`
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
$ngx_obj: \$(CORE_DEPS) \$(STREAM_DEPS)$ngx_cont$ngx_src
|
||||||
|
$ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX
|
||||||
|
|
||||||
|
END
|
||||||
|
done
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# the misc sources
|
||||||
|
|
||||||
|
if test -n "$MISC_SRCS"; then
|
||||||
|
|
||||||
|
ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) $ngx_use_pch \$(ALL_INCS)"
|
||||||
|
|
||||||
|
for ngx_src in $MISC_SRCS
|
||||||
|
do
|
||||||
|
ngx_src=`echo $ngx_src | sed -e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
ngx_obj=`echo $ngx_src \
|
||||||
|
| sed -e "s#^\(.*\.\)cpp\\$#$ngx_objs_dir\1$ngx_objext#g" \
|
||||||
|
-e "s#^\(.*\.\)cc\\$#$ngx_objs_dir\1$ngx_objext#g" \
|
||||||
|
-e "s#^\(.*\.\)c\\$#$ngx_objs_dir\1$ngx_objext#g" \
|
||||||
|
-e "s#^\(.*\.\)S\\$#$ngx_objs_dir\1$ngx_objext#g"`
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
$ngx_obj: \$(CORE_DEPS) $ngx_cont$ngx_src
|
||||||
|
$ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX
|
||||||
|
|
||||||
|
END
|
||||||
|
done
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# the addons sources
|
||||||
|
|
||||||
|
if test -n "$NGX_ADDON_SRCS"; then
|
||||||
|
|
||||||
|
ngx_cc="\$(CC) $ngx_compile_opt \$(CFLAGS) $ngx_use_pch \$(ALL_INCS)"
|
||||||
|
|
||||||
|
for ngx_src in $NGX_ADDON_SRCS
|
||||||
|
do
|
||||||
|
ngx_obj="addon/`basename \`dirname $ngx_src\``"
|
||||||
|
|
||||||
|
ngx_obj=`echo $ngx_obj/\`basename $ngx_src\` \
|
||||||
|
| sed -e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
|
||||||
|
ngx_obj=`echo $ngx_obj \
|
||||||
|
| sed -e "s#^\(.*\.\)cpp\\$#$ngx_objs_dir\1$ngx_objext#g" \
|
||||||
|
-e "s#^\(.*\.\)cc\\$#$ngx_objs_dir\1$ngx_objext#g" \
|
||||||
|
-e "s#^\(.*\.\)c\\$#$ngx_objs_dir\1$ngx_objext#g" \
|
||||||
|
-e "s#^\(.*\.\)S\\$#$ngx_objs_dir\1$ngx_objext#g"`
|
||||||
|
|
||||||
|
ngx_src=`echo $ngx_src | sed -e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
$ngx_obj: \$(ADDON_DEPS)$ngx_cont$ngx_src
|
||||||
|
$ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX
|
||||||
|
|
||||||
|
END
|
||||||
|
done
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# the addons config.make
|
||||||
|
|
||||||
|
if test -n "$NGX_ADDONS$DYNAMIC_ADDONS"; then
|
||||||
|
|
||||||
|
for ngx_addon_dir in $NGX_ADDONS $DYNAMIC_ADDONS
|
||||||
|
do
|
||||||
|
if test -f $ngx_addon_dir/config.make; then
|
||||||
|
. $ngx_addon_dir/config.make
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# Win32 resource file
|
||||||
|
|
||||||
|
if test -n "$NGX_RES"; then
|
||||||
|
|
||||||
|
ngx_res=`echo "$NGX_RES: $NGX_RC $NGX_ICONS" \
|
||||||
|
| sed -e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
ngx_rcc=`echo $NGX_RCC | sed -e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
$ngx_res
|
||||||
|
$ngx_rcc
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# the precompiled headers
|
||||||
|
|
||||||
|
if test -n "$NGX_PCH"; then
|
||||||
|
echo "#include <ngx_config.h>" > $NGX_OBJS/ngx_pch.c
|
||||||
|
|
||||||
|
ngx_pch="src/core/ngx_config.h $OS_CONFIG $NGX_OBJS/ngx_auto_config.h"
|
||||||
|
ngx_pch=`echo "$NGX_PCH: $ngx_pch" | sed -e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
|
||||||
|
ngx_src="\$(CC) \$(CFLAGS) $NGX_BUILD_PCH $ngx_compile_opt \$(ALL_INCS)"
|
||||||
|
ngx_src="$ngx_src $ngx_objout$NGX_OBJS/ngx_pch.obj $NGX_OBJS/ngx_pch.c"
|
||||||
|
ngx_src=`echo $ngx_src | sed -e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
$ngx_pch
|
||||||
|
$ngx_src
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# dynamic modules
|
||||||
|
|
||||||
|
if test -n "$NGX_PCH"; then
|
||||||
|
ngx_cc="\$(CC) $ngx_compile_opt $ngx_pic_opt \$(CFLAGS) $ngx_use_pch \$(ALL_INCS)"
|
||||||
|
else
|
||||||
|
ngx_cc="\$(CC) $ngx_compile_opt $ngx_pic_opt \$(CFLAGS) \$(ALL_INCS)"
|
||||||
|
ngx_perl_cc="\$(CC) $ngx_compile_opt $ngx_pic_opt \$(NGX_PERL_CFLAGS)"
|
||||||
|
ngx_perl_cc="$ngx_perl_cc \$(ALL_INCS)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
for ngx_module in $DYNAMIC_MODULES
|
||||||
|
do
|
||||||
|
eval ngx_module_srcs="\$${ngx_module}_SRCS"
|
||||||
|
eval eval ngx_module_libs="\\\"\$${ngx_module}_LIBS\\\""
|
||||||
|
|
||||||
|
eval ngx_module_modules="\$${ngx_module}_MODULES"
|
||||||
|
eval ngx_module_order="\$${ngx_module}_ORDER"
|
||||||
|
|
||||||
|
ngx_modules_c=$NGX_OBJS/${ngx_module}_modules.c
|
||||||
|
|
||||||
|
cat << END > $ngx_modules_c
|
||||||
|
|
||||||
|
#include <ngx_config.h>
|
||||||
|
#include <ngx_core.h>
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
for mod in $ngx_module_modules
|
||||||
|
do
|
||||||
|
echo "extern ngx_module_t $mod;" >> $ngx_modules_c
|
||||||
|
done
|
||||||
|
|
||||||
|
echo >> $ngx_modules_c
|
||||||
|
echo 'ngx_module_t *ngx_modules[] = {' >> $ngx_modules_c
|
||||||
|
|
||||||
|
for mod in $ngx_module_modules
|
||||||
|
do
|
||||||
|
echo " &$mod," >> $ngx_modules_c
|
||||||
|
done
|
||||||
|
|
||||||
|
cat << END >> $ngx_modules_c
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
echo 'char *ngx_module_names[] = {' >> $ngx_modules_c
|
||||||
|
|
||||||
|
for mod in $ngx_module_modules
|
||||||
|
do
|
||||||
|
echo " \"$mod\"," >> $ngx_modules_c
|
||||||
|
done
|
||||||
|
|
||||||
|
cat << END >> $ngx_modules_c
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
echo 'char *ngx_module_order[] = {' >> $ngx_modules_c
|
||||||
|
|
||||||
|
for mod in $ngx_module_order
|
||||||
|
do
|
||||||
|
echo " \"$mod\"," >> $ngx_modules_c
|
||||||
|
done
|
||||||
|
|
||||||
|
cat << END >> $ngx_modules_c
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
ngx_modules_c=`echo $ngx_modules_c | sed -e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
|
||||||
|
ngx_modules_obj=`echo $ngx_modules_c \
|
||||||
|
| sed -e "s/\(.*\.\)c/\1$ngx_objext/"`
|
||||||
|
|
||||||
|
ngx_module_objs=
|
||||||
|
for ngx_src in $ngx_module_srcs
|
||||||
|
do
|
||||||
|
case "$ngx_src" in
|
||||||
|
src/*)
|
||||||
|
ngx_obj=$ngx_src
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
ngx_obj="addon/`basename \`dirname $ngx_src\``"
|
||||||
|
mkdir -p $NGX_OBJS/$ngx_obj
|
||||||
|
ngx_obj="$ngx_obj/`basename $ngx_src`"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
ngx_module_objs="$ngx_module_objs $ngx_obj"
|
||||||
|
done
|
||||||
|
|
||||||
|
ngx_module_objs=`echo $ngx_module_objs \
|
||||||
|
| sed -e "s#\([^ ]*\.\)cpp#$NGX_OBJS\/\1$ngx_objext#g" \
|
||||||
|
-e "s#\([^ ]*\.\)cc#$NGX_OBJS\/\1$ngx_objext#g" \
|
||||||
|
-e "s#\([^ ]*\.\)c#$NGX_OBJS\/\1$ngx_objext#g" \
|
||||||
|
-e "s#\([^ ]*\.\)S#$NGX_OBJS\/\1$ngx_objext#g"`
|
||||||
|
|
||||||
|
ngx_deps=`echo $ngx_module_objs $ngx_modules_obj $LINK_DEPS \
|
||||||
|
| sed -e "s/ *\([^ ][^ ]*\)/$ngx_regex_cont\1/g" \
|
||||||
|
-e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
|
||||||
|
ngx_objs=`echo $ngx_module_objs $ngx_modules_obj \
|
||||||
|
| sed -e "s/ *\([^ ][^ ]*\)/$ngx_long_regex_cont\1/g" \
|
||||||
|
-e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
|
||||||
|
ngx_obj=$NGX_OBJS$ngx_dirsep$ngx_module$ngx_modext
|
||||||
|
|
||||||
|
if [ "$NGX_PLATFORM" = win32 ]; then
|
||||||
|
ngx_module_libs="$CORE_LIBS $ngx_module_libs"
|
||||||
|
fi
|
||||||
|
|
||||||
|
ngx_libs=
|
||||||
|
if test -n "$NGX_LD_OPT$ngx_module_libs"; then
|
||||||
|
ngx_libs=`echo $NGX_LD_OPT $ngx_module_libs \
|
||||||
|
| sed -e "s/\//$ngx_regex_dirsep/g" -e "s/^/$ngx_long_regex_cont/"`
|
||||||
|
fi
|
||||||
|
|
||||||
|
ngx_link=${CORE_LINK:+`echo $CORE_LINK \
|
||||||
|
| sed -e "s/\//$ngx_regex_dirsep/g" -e "s/^/$ngx_long_regex_cont/"`}
|
||||||
|
|
||||||
|
ngx_module_link=${MODULE_LINK:+`echo $MODULE_LINK \
|
||||||
|
| sed -e "s/\//$ngx_regex_dirsep/g" -e "s/^/$ngx_long_regex_cont/"`}
|
||||||
|
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
modules: $ngx_obj
|
||||||
|
|
||||||
|
$ngx_obj: $ngx_deps$ngx_spacer
|
||||||
|
\$(LINK) $ngx_long_start$ngx_binout$ngx_obj$ngx_long_cont$ngx_objs$ngx_libs$ngx_link$ngx_module_link
|
||||||
|
$ngx_long_end
|
||||||
|
|
||||||
|
$ngx_modules_obj: \$(CORE_DEPS)$ngx_cont$ngx_modules_c
|
||||||
|
$ngx_cc$ngx_tab$ngx_objout$ngx_modules_obj$ngx_tab$ngx_modules_c$NGX_AUX
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
for ngx_source in $ngx_module_srcs
|
||||||
|
do
|
||||||
|
case "$ngx_source" in
|
||||||
|
src/*)
|
||||||
|
ngx_obj=`echo $ngx_source | sed -e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
ngx_obj="addon/`basename \`dirname $ngx_source\``"
|
||||||
|
ngx_obj=`echo $ngx_obj/\`basename $ngx_source\` \
|
||||||
|
| sed -e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
ngx_obj=`echo $ngx_obj \
|
||||||
|
| sed -e "s#^\(.*\.\)cpp\\$#$ngx_objs_dir\1$ngx_objext#g" \
|
||||||
|
-e "s#^\(.*\.\)cc\\$#$ngx_objs_dir\1$ngx_objext#g" \
|
||||||
|
-e "s#^\(.*\.\)c\\$#$ngx_objs_dir\1$ngx_objext#g" \
|
||||||
|
-e "s#^\(.*\.\)S\\$#$ngx_objs_dir\1$ngx_objext#g"`
|
||||||
|
|
||||||
|
ngx_src=`echo $ngx_source | sed -e "s/\//$ngx_regex_dirsep/g"`
|
||||||
|
|
||||||
|
if [ $ngx_source = src/http/modules/perl/ngx_http_perl_module.c ]; then
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
$ngx_obj: \$(ADDON_DEPS)$ngx_cont$ngx_src
|
||||||
|
$ngx_perl_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX
|
||||||
|
|
||||||
|
END
|
||||||
|
else
|
||||||
|
|
||||||
|
cat << END >> $NGX_MAKEFILE
|
||||||
|
|
||||||
|
$ngx_obj: \$(ADDON_DEPS)$ngx_cont$ngx_src
|
||||||
|
$ngx_cc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
@ -0,0 +1,138 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Ruslan Ermilov
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
case $ngx_module_type in
|
||||||
|
HTTP_*) ngx_var=HTTP ;;
|
||||||
|
*) ngx_var=$ngx_module_type ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
if [ "$ngx_module_link" = DYNAMIC ]; then
|
||||||
|
|
||||||
|
for ngx_module in $ngx_module_name; do
|
||||||
|
# extract the first name
|
||||||
|
break
|
||||||
|
done
|
||||||
|
|
||||||
|
DYNAMIC_MODULES="$DYNAMIC_MODULES $ngx_module"
|
||||||
|
eval ${ngx_module}_SRCS=\"$ngx_module_srcs\"
|
||||||
|
|
||||||
|
eval ${ngx_module}_MODULES=\"$ngx_module_name\"
|
||||||
|
|
||||||
|
if [ -z "$ngx_module_order" -a \
|
||||||
|
\( "$ngx_module_type" = "HTTP_FILTER" \
|
||||||
|
-o "$ngx_module_type" = "HTTP_AUX_FILTER" \) ]
|
||||||
|
then
|
||||||
|
eval ${ngx_module}_ORDER=\"$ngx_module_name \
|
||||||
|
ngx_http_copy_filter_module\"
|
||||||
|
else
|
||||||
|
eval ${ngx_module}_ORDER=\"$ngx_module_order\"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -n "$ngx_module_incs"; then
|
||||||
|
CORE_INCS="$CORE_INCS $ngx_module_incs"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -n "$ngx_module_deps"; then
|
||||||
|
NGX_ADDON_DEPS="$NGX_ADDON_DEPS $ngx_module_deps"
|
||||||
|
fi
|
||||||
|
|
||||||
|
libs=
|
||||||
|
for lib in $ngx_module_libs
|
||||||
|
do
|
||||||
|
case $lib in
|
||||||
|
|
||||||
|
LIBXSLT | LIBGD | GEOIP | PERL)
|
||||||
|
libs="$libs \$NGX_LIB_$lib"
|
||||||
|
|
||||||
|
if eval [ "\$USE_${lib}" = NO ] ; then
|
||||||
|
eval USE_${lib}=DYNAMIC
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
PCRE | OPENSSL | ZLIB)
|
||||||
|
eval USE_${lib}=YES
|
||||||
|
;;
|
||||||
|
|
||||||
|
MD5 | SHA1)
|
||||||
|
# obsolete
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
libs="$libs $lib"
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
eval ${ngx_module}_LIBS=\'$libs\'
|
||||||
|
|
||||||
|
elif [ "$ngx_module_link" = YES ]; then
|
||||||
|
|
||||||
|
eval ${ngx_module_type}_MODULES=\"\$${ngx_module_type}_MODULES \
|
||||||
|
$ngx_module_name\"
|
||||||
|
|
||||||
|
eval ${ngx_var}_SRCS=\"\$${ngx_var}_SRCS $ngx_module_srcs\"
|
||||||
|
|
||||||
|
if test -n "$ngx_module_incs"; then
|
||||||
|
eval ${ngx_var}_INCS=\"\$${ngx_var}_INCS $ngx_module_incs\"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -n "$ngx_module_deps"; then
|
||||||
|
eval ${ngx_var}_DEPS=\"\$${ngx_var}_DEPS $ngx_module_deps\"
|
||||||
|
fi
|
||||||
|
|
||||||
|
for lib in $ngx_module_libs
|
||||||
|
do
|
||||||
|
case $lib in
|
||||||
|
|
||||||
|
PCRE | OPENSSL | ZLIB | LIBXSLT | LIBGD | PERL | GEOIP)
|
||||||
|
eval USE_${lib}=YES
|
||||||
|
;;
|
||||||
|
|
||||||
|
MD5 | SHA1)
|
||||||
|
# obsolete
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
CORE_LIBS="$CORE_LIBS $lib"
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
elif [ "$ngx_module_link" = ADDON ]; then
|
||||||
|
|
||||||
|
eval ${ngx_module_type}_MODULES=\"\$${ngx_module_type}_MODULES \
|
||||||
|
$ngx_module_name\"
|
||||||
|
|
||||||
|
NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_module_srcs"
|
||||||
|
|
||||||
|
if test -n "$ngx_module_incs"; then
|
||||||
|
eval ${ngx_var}_INCS=\"\$${ngx_var}_INCS $ngx_module_incs\"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -n "$ngx_module_deps"; then
|
||||||
|
NGX_ADDON_DEPS="$NGX_ADDON_DEPS $ngx_module_deps"
|
||||||
|
fi
|
||||||
|
|
||||||
|
for lib in $ngx_module_libs
|
||||||
|
do
|
||||||
|
case $lib in
|
||||||
|
|
||||||
|
PCRE | OPENSSL | ZLIB | LIBXSLT | LIBGD | PERL | GEOIP)
|
||||||
|
eval USE_${lib}=YES
|
||||||
|
;;
|
||||||
|
|
||||||
|
MD5 | SHA1)
|
||||||
|
# obsolete
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
CORE_LIBS="$CORE_LIBS $lib"
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
fi
|
@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
cat << END >> $NGX_AUTO_CONFIG_H
|
||||||
|
|
||||||
|
#ifndef $have
|
||||||
|
#define $have 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
END
|
@ -0,0 +1,627 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
help=no
|
||||||
|
|
||||||
|
NGX_PREFIX=
|
||||||
|
NGX_SBIN_PATH=
|
||||||
|
NGX_MODULES_PATH=
|
||||||
|
NGX_CONF_PREFIX=
|
||||||
|
NGX_CONF_PATH=
|
||||||
|
NGX_ERROR_LOG_PATH=
|
||||||
|
NGX_PID_PATH=
|
||||||
|
NGX_LOCK_PATH=
|
||||||
|
NGX_USER=
|
||||||
|
NGX_GROUP=
|
||||||
|
NGX_BUILD=
|
||||||
|
|
||||||
|
CC=${CC:-cc}
|
||||||
|
CPP=
|
||||||
|
NGX_OBJS=objs
|
||||||
|
|
||||||
|
NGX_DEBUG=NO
|
||||||
|
NGX_CC_OPT=
|
||||||
|
NGX_LD_OPT=
|
||||||
|
CPU=NO
|
||||||
|
|
||||||
|
NGX_RPATH=NO
|
||||||
|
|
||||||
|
NGX_TEST_BUILD_DEVPOLL=NO
|
||||||
|
NGX_TEST_BUILD_EVENTPORT=NO
|
||||||
|
NGX_TEST_BUILD_EPOLL=NO
|
||||||
|
NGX_TEST_BUILD_SOLARIS_SENDFILEV=NO
|
||||||
|
|
||||||
|
NGX_PLATFORM=
|
||||||
|
NGX_WINE=
|
||||||
|
|
||||||
|
EVENT_FOUND=NO
|
||||||
|
|
||||||
|
EVENT_SELECT=NO
|
||||||
|
EVENT_POLL=NO
|
||||||
|
|
||||||
|
USE_THREADS=NO
|
||||||
|
|
||||||
|
NGX_FILE_AIO=NO
|
||||||
|
|
||||||
|
HTTP=YES
|
||||||
|
|
||||||
|
NGX_HTTP_LOG_PATH=
|
||||||
|
NGX_HTTP_CLIENT_TEMP_PATH=
|
||||||
|
NGX_HTTP_PROXY_TEMP_PATH=
|
||||||
|
NGX_HTTP_FASTCGI_TEMP_PATH=
|
||||||
|
NGX_HTTP_UWSGI_TEMP_PATH=
|
||||||
|
NGX_HTTP_SCGI_TEMP_PATH=
|
||||||
|
|
||||||
|
HTTP_CACHE=YES
|
||||||
|
HTTP_CHARSET=YES
|
||||||
|
HTTP_GZIP=YES
|
||||||
|
HTTP_SSL=NO
|
||||||
|
HTTP_V2=NO
|
||||||
|
HTTP_SSI=YES
|
||||||
|
HTTP_REALIP=NO
|
||||||
|
HTTP_XSLT=NO
|
||||||
|
HTTP_IMAGE_FILTER=NO
|
||||||
|
HTTP_SUB=NO
|
||||||
|
HTTP_ADDITION=NO
|
||||||
|
HTTP_DAV=NO
|
||||||
|
HTTP_ACCESS=YES
|
||||||
|
HTTP_AUTH_BASIC=YES
|
||||||
|
HTTP_AUTH_REQUEST=NO
|
||||||
|
HTTP_MIRROR=YES
|
||||||
|
HTTP_USERID=YES
|
||||||
|
HTTP_SLICE=NO
|
||||||
|
HTTP_AUTOINDEX=YES
|
||||||
|
HTTP_RANDOM_INDEX=NO
|
||||||
|
HTTP_STATUS=NO
|
||||||
|
HTTP_GEO=YES
|
||||||
|
HTTP_GEOIP=NO
|
||||||
|
HTTP_MAP=YES
|
||||||
|
HTTP_SPLIT_CLIENTS=YES
|
||||||
|
HTTP_REFERER=YES
|
||||||
|
HTTP_REWRITE=YES
|
||||||
|
HTTP_PROXY=YES
|
||||||
|
HTTP_FASTCGI=YES
|
||||||
|
HTTP_UWSGI=YES
|
||||||
|
HTTP_SCGI=YES
|
||||||
|
HTTP_GRPC=YES
|
||||||
|
HTTP_PERL=NO
|
||||||
|
HTTP_MEMCACHED=YES
|
||||||
|
HTTP_LIMIT_CONN=YES
|
||||||
|
HTTP_LIMIT_REQ=YES
|
||||||
|
HTTP_EMPTY_GIF=YES
|
||||||
|
HTTP_BROWSER=YES
|
||||||
|
HTTP_SECURE_LINK=NO
|
||||||
|
HTTP_DEGRADATION=NO
|
||||||
|
HTTP_FLV=NO
|
||||||
|
HTTP_MP4=NO
|
||||||
|
HTTP_GUNZIP=NO
|
||||||
|
HTTP_GZIP_STATIC=NO
|
||||||
|
HTTP_UPSTREAM_HASH=YES
|
||||||
|
HTTP_UPSTREAM_IP_HASH=YES
|
||||||
|
HTTP_UPSTREAM_LEAST_CONN=YES
|
||||||
|
HTTP_UPSTREAM_RANDOM=YES
|
||||||
|
HTTP_UPSTREAM_KEEPALIVE=YES
|
||||||
|
HTTP_UPSTREAM_ZONE=YES
|
||||||
|
|
||||||
|
# STUB
|
||||||
|
HTTP_STUB_STATUS=NO
|
||||||
|
|
||||||
|
MAIL=NO
|
||||||
|
MAIL_SSL=NO
|
||||||
|
MAIL_POP3=YES
|
||||||
|
MAIL_IMAP=YES
|
||||||
|
MAIL_SMTP=YES
|
||||||
|
|
||||||
|
STREAM=NO
|
||||||
|
STREAM_SSL=NO
|
||||||
|
STREAM_REALIP=NO
|
||||||
|
STREAM_LIMIT_CONN=YES
|
||||||
|
STREAM_ACCESS=YES
|
||||||
|
STREAM_GEO=YES
|
||||||
|
STREAM_GEOIP=NO
|
||||||
|
STREAM_MAP=YES
|
||||||
|
STREAM_SPLIT_CLIENTS=YES
|
||||||
|
STREAM_RETURN=YES
|
||||||
|
STREAM_UPSTREAM_HASH=YES
|
||||||
|
STREAM_UPSTREAM_LEAST_CONN=YES
|
||||||
|
STREAM_UPSTREAM_RANDOM=YES
|
||||||
|
STREAM_UPSTREAM_ZONE=YES
|
||||||
|
STREAM_SSL_PREREAD=NO
|
||||||
|
|
||||||
|
DYNAMIC_MODULES=
|
||||||
|
|
||||||
|
NGX_ADDONS=
|
||||||
|
NGX_ADDON_DEPS=
|
||||||
|
DYNAMIC_ADDONS=
|
||||||
|
|
||||||
|
NGX_COMPAT=NO
|
||||||
|
|
||||||
|
USE_PCRE=NO
|
||||||
|
PCRE=NONE
|
||||||
|
PCRE_OPT=
|
||||||
|
PCRE_CONF_OPT=
|
||||||
|
PCRE_JIT=NO
|
||||||
|
|
||||||
|
USE_OPENSSL=NO
|
||||||
|
OPENSSL=NONE
|
||||||
|
|
||||||
|
USE_ZLIB=NO
|
||||||
|
ZLIB=NONE
|
||||||
|
ZLIB_OPT=
|
||||||
|
ZLIB_ASM=NO
|
||||||
|
|
||||||
|
USE_PERL=NO
|
||||||
|
NGX_PERL=perl
|
||||||
|
|
||||||
|
USE_LIBXSLT=NO
|
||||||
|
USE_LIBGD=NO
|
||||||
|
USE_GEOIP=NO
|
||||||
|
|
||||||
|
NGX_GOOGLE_PERFTOOLS=NO
|
||||||
|
NGX_CPP_TEST=NO
|
||||||
|
|
||||||
|
NGX_LIBATOMIC=NO
|
||||||
|
|
||||||
|
NGX_CPU_CACHE_LINE=
|
||||||
|
|
||||||
|
NGX_POST_CONF_MSG=
|
||||||
|
|
||||||
|
opt=
|
||||||
|
|
||||||
|
for option
|
||||||
|
do
|
||||||
|
opt="$opt `echo $option | sed -e \"s/\(--[^=]*=\)\(.* .*\)/\1'\2'/\"`"
|
||||||
|
|
||||||
|
case "$option" in
|
||||||
|
-*=*) value=`echo "$option" | sed -e 's/[-_a-zA-Z0-9]*=//'` ;;
|
||||||
|
*) value="" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
case "$option" in
|
||||||
|
--help) help=yes ;;
|
||||||
|
|
||||||
|
--prefix=) NGX_PREFIX="!" ;;
|
||||||
|
--prefix=*) NGX_PREFIX="$value" ;;
|
||||||
|
--sbin-path=*) NGX_SBIN_PATH="$value" ;;
|
||||||
|
--modules-path=*) NGX_MODULES_PATH="$value" ;;
|
||||||
|
--conf-path=*) NGX_CONF_PATH="$value" ;;
|
||||||
|
--error-log-path=*) NGX_ERROR_LOG_PATH="$value";;
|
||||||
|
--pid-path=*) NGX_PID_PATH="$value" ;;
|
||||||
|
--lock-path=*) NGX_LOCK_PATH="$value" ;;
|
||||||
|
--user=*) NGX_USER="$value" ;;
|
||||||
|
--group=*) NGX_GROUP="$value" ;;
|
||||||
|
|
||||||
|
--crossbuild=*) NGX_PLATFORM="$value" ;;
|
||||||
|
|
||||||
|
--build=*) NGX_BUILD="$value" ;;
|
||||||
|
--builddir=*) NGX_OBJS="$value" ;;
|
||||||
|
|
||||||
|
--with-select_module) EVENT_SELECT=YES ;;
|
||||||
|
--without-select_module) EVENT_SELECT=NONE ;;
|
||||||
|
--with-poll_module) EVENT_POLL=YES ;;
|
||||||
|
--without-poll_module) EVENT_POLL=NONE ;;
|
||||||
|
|
||||||
|
--with-threads) USE_THREADS=YES ;;
|
||||||
|
|
||||||
|
--with-file-aio) NGX_FILE_AIO=YES ;;
|
||||||
|
|
||||||
|
--with-ipv6)
|
||||||
|
NGX_POST_CONF_MSG="$NGX_POST_CONF_MSG
|
||||||
|
$0: warning: the \"--with-ipv6\" option is deprecated"
|
||||||
|
;;
|
||||||
|
|
||||||
|
--without-http) HTTP=NO ;;
|
||||||
|
--without-http-cache) HTTP_CACHE=NO ;;
|
||||||
|
|
||||||
|
--http-log-path=*) NGX_HTTP_LOG_PATH="$value" ;;
|
||||||
|
--http-client-body-temp-path=*) NGX_HTTP_CLIENT_TEMP_PATH="$value" ;;
|
||||||
|
--http-proxy-temp-path=*) NGX_HTTP_PROXY_TEMP_PATH="$value" ;;
|
||||||
|
--http-fastcgi-temp-path=*) NGX_HTTP_FASTCGI_TEMP_PATH="$value" ;;
|
||||||
|
--http-uwsgi-temp-path=*) NGX_HTTP_UWSGI_TEMP_PATH="$value" ;;
|
||||||
|
--http-scgi-temp-path=*) NGX_HTTP_SCGI_TEMP_PATH="$value" ;;
|
||||||
|
|
||||||
|
--with-http_ssl_module) HTTP_SSL=YES ;;
|
||||||
|
--with-http_v2_module) HTTP_V2=YES ;;
|
||||||
|
--with-http_realip_module) HTTP_REALIP=YES ;;
|
||||||
|
--with-http_addition_module) HTTP_ADDITION=YES ;;
|
||||||
|
--with-http_xslt_module) HTTP_XSLT=YES ;;
|
||||||
|
--with-http_xslt_module=dynamic) HTTP_XSLT=DYNAMIC ;;
|
||||||
|
--with-http_image_filter_module) HTTP_IMAGE_FILTER=YES ;;
|
||||||
|
--with-http_image_filter_module=dynamic)
|
||||||
|
HTTP_IMAGE_FILTER=DYNAMIC ;;
|
||||||
|
--with-http_geoip_module) HTTP_GEOIP=YES ;;
|
||||||
|
--with-http_geoip_module=dynamic)
|
||||||
|
HTTP_GEOIP=DYNAMIC ;;
|
||||||
|
--with-http_sub_module) HTTP_SUB=YES ;;
|
||||||
|
--with-http_dav_module) HTTP_DAV=YES ;;
|
||||||
|
--with-http_flv_module) HTTP_FLV=YES ;;
|
||||||
|
--with-http_mp4_module) HTTP_MP4=YES ;;
|
||||||
|
--with-http_gunzip_module) HTTP_GUNZIP=YES ;;
|
||||||
|
--with-http_gzip_static_module) HTTP_GZIP_STATIC=YES ;;
|
||||||
|
--with-http_auth_request_module) HTTP_AUTH_REQUEST=YES ;;
|
||||||
|
--with-http_random_index_module) HTTP_RANDOM_INDEX=YES ;;
|
||||||
|
--with-http_secure_link_module) HTTP_SECURE_LINK=YES ;;
|
||||||
|
--with-http_degradation_module) HTTP_DEGRADATION=YES ;;
|
||||||
|
--with-http_slice_module) HTTP_SLICE=YES ;;
|
||||||
|
|
||||||
|
--without-http_charset_module) HTTP_CHARSET=NO ;;
|
||||||
|
--without-http_gzip_module) HTTP_GZIP=NO ;;
|
||||||
|
--without-http_ssi_module) HTTP_SSI=NO ;;
|
||||||
|
--without-http_userid_module) HTTP_USERID=NO ;;
|
||||||
|
--without-http_access_module) HTTP_ACCESS=NO ;;
|
||||||
|
--without-http_auth_basic_module) HTTP_AUTH_BASIC=NO ;;
|
||||||
|
--without-http_mirror_module) HTTP_MIRROR=NO ;;
|
||||||
|
--without-http_autoindex_module) HTTP_AUTOINDEX=NO ;;
|
||||||
|
--without-http_status_module) HTTP_STATUS=NO ;;
|
||||||
|
--without-http_geo_module) HTTP_GEO=NO ;;
|
||||||
|
--without-http_map_module) HTTP_MAP=NO ;;
|
||||||
|
--without-http_split_clients_module) HTTP_SPLIT_CLIENTS=NO ;;
|
||||||
|
--without-http_referer_module) HTTP_REFERER=NO ;;
|
||||||
|
--without-http_rewrite_module) HTTP_REWRITE=NO ;;
|
||||||
|
--without-http_proxy_module) HTTP_PROXY=NO ;;
|
||||||
|
--without-http_fastcgi_module) HTTP_FASTCGI=NO ;;
|
||||||
|
--without-http_uwsgi_module) HTTP_UWSGI=NO ;;
|
||||||
|
--without-http_scgi_module) HTTP_SCGI=NO ;;
|
||||||
|
--without-http_grpc_module) HTTP_GRPC=NO ;;
|
||||||
|
--without-http_memcached_module) HTTP_MEMCACHED=NO ;;
|
||||||
|
--without-http_limit_conn_module) HTTP_LIMIT_CONN=NO ;;
|
||||||
|
--without-http_limit_req_module) HTTP_LIMIT_REQ=NO ;;
|
||||||
|
--without-http_empty_gif_module) HTTP_EMPTY_GIF=NO ;;
|
||||||
|
--without-http_browser_module) HTTP_BROWSER=NO ;;
|
||||||
|
--without-http_upstream_hash_module) HTTP_UPSTREAM_HASH=NO ;;
|
||||||
|
--without-http_upstream_ip_hash_module) HTTP_UPSTREAM_IP_HASH=NO ;;
|
||||||
|
--without-http_upstream_least_conn_module)
|
||||||
|
HTTP_UPSTREAM_LEAST_CONN=NO ;;
|
||||||
|
--without-http_upstream_random_module)
|
||||||
|
HTTP_UPSTREAM_RANDOM=NO ;;
|
||||||
|
--without-http_upstream_keepalive_module) HTTP_UPSTREAM_KEEPALIVE=NO ;;
|
||||||
|
--without-http_upstream_zone_module) HTTP_UPSTREAM_ZONE=NO ;;
|
||||||
|
|
||||||
|
--with-http_perl_module) HTTP_PERL=YES ;;
|
||||||
|
--with-http_perl_module=dynamic) HTTP_PERL=DYNAMIC ;;
|
||||||
|
--with-perl_modules_path=*) NGX_PERL_MODULES="$value" ;;
|
||||||
|
--with-perl=*) NGX_PERL="$value" ;;
|
||||||
|
|
||||||
|
# STUB
|
||||||
|
--with-http_stub_status_module) HTTP_STUB_STATUS=YES ;;
|
||||||
|
|
||||||
|
--with-mail) MAIL=YES ;;
|
||||||
|
--with-mail=dynamic) MAIL=DYNAMIC ;;
|
||||||
|
--with-mail_ssl_module) MAIL_SSL=YES ;;
|
||||||
|
# STUB
|
||||||
|
--with-imap)
|
||||||
|
MAIL=YES
|
||||||
|
NGX_POST_CONF_MSG="$NGX_POST_CONF_MSG
|
||||||
|
$0: warning: the \"--with-imap\" option is deprecated, \
|
||||||
|
use the \"--with-mail\" option instead"
|
||||||
|
;;
|
||||||
|
--with-imap_ssl_module)
|
||||||
|
MAIL_SSL=YES
|
||||||
|
NGX_POST_CONF_MSG="$NGX_POST_CONF_MSG
|
||||||
|
$0: warning: the \"--with-imap_ssl_module\" option is deprecated, \
|
||||||
|
use the \"--with-mail_ssl_module\" option instead"
|
||||||
|
;;
|
||||||
|
--without-mail_pop3_module) MAIL_POP3=NO ;;
|
||||||
|
--without-mail_imap_module) MAIL_IMAP=NO ;;
|
||||||
|
--without-mail_smtp_module) MAIL_SMTP=NO ;;
|
||||||
|
|
||||||
|
--with-stream) STREAM=YES ;;
|
||||||
|
--with-stream=dynamic) STREAM=DYNAMIC ;;
|
||||||
|
--with-stream_ssl_module) STREAM_SSL=YES ;;
|
||||||
|
--with-stream_realip_module) STREAM_REALIP=YES ;;
|
||||||
|
--with-stream_geoip_module) STREAM_GEOIP=YES ;;
|
||||||
|
--with-stream_geoip_module=dynamic)
|
||||||
|
STREAM_GEOIP=DYNAMIC ;;
|
||||||
|
--with-stream_ssl_preread_module)
|
||||||
|
STREAM_SSL_PREREAD=YES ;;
|
||||||
|
--without-stream_limit_conn_module)
|
||||||
|
STREAM_LIMIT_CONN=NO ;;
|
||||||
|
--without-stream_access_module) STREAM_ACCESS=NO ;;
|
||||||
|
--without-stream_geo_module) STREAM_GEO=NO ;;
|
||||||
|
--without-stream_map_module) STREAM_MAP=NO ;;
|
||||||
|
--without-stream_split_clients_module)
|
||||||
|
STREAM_SPLIT_CLIENTS=NO ;;
|
||||||
|
--without-stream_return_module) STREAM_RETURN=NO ;;
|
||||||
|
--without-stream_upstream_hash_module)
|
||||||
|
STREAM_UPSTREAM_HASH=NO ;;
|
||||||
|
--without-stream_upstream_least_conn_module)
|
||||||
|
STREAM_UPSTREAM_LEAST_CONN=NO ;;
|
||||||
|
--without-stream_upstream_random_module)
|
||||||
|
STREAM_UPSTREAM_RANDOM=NO ;;
|
||||||
|
--without-stream_upstream_zone_module)
|
||||||
|
STREAM_UPSTREAM_ZONE=NO ;;
|
||||||
|
|
||||||
|
--with-google_perftools_module) NGX_GOOGLE_PERFTOOLS=YES ;;
|
||||||
|
--with-cpp_test_module) NGX_CPP_TEST=YES ;;
|
||||||
|
|
||||||
|
--add-module=*) NGX_ADDONS="$NGX_ADDONS $value" ;;
|
||||||
|
--add-dynamic-module=*) DYNAMIC_ADDONS="$DYNAMIC_ADDONS $value" ;;
|
||||||
|
|
||||||
|
--with-compat) NGX_COMPAT=YES ;;
|
||||||
|
|
||||||
|
--with-cc=*) CC="$value" ;;
|
||||||
|
--with-cpp=*) CPP="$value" ;;
|
||||||
|
--with-cc-opt=*) NGX_CC_OPT="$value" ;;
|
||||||
|
--with-ld-opt=*) NGX_LD_OPT="$value" ;;
|
||||||
|
--with-cpu-opt=*) CPU="$value" ;;
|
||||||
|
--with-debug) NGX_DEBUG=YES ;;
|
||||||
|
|
||||||
|
--without-pcre) USE_PCRE=DISABLED ;;
|
||||||
|
--with-pcre) USE_PCRE=YES ;;
|
||||||
|
--with-pcre=*) PCRE="$value" ;;
|
||||||
|
--with-pcre-opt=*) PCRE_OPT="$value" ;;
|
||||||
|
--with-pcre-jit) PCRE_JIT=YES ;;
|
||||||
|
|
||||||
|
--with-openssl=*) OPENSSL="$value" ;;
|
||||||
|
--with-openssl-opt=*) OPENSSL_OPT="$value" ;;
|
||||||
|
|
||||||
|
--with-md5=*)
|
||||||
|
NGX_POST_CONF_MSG="$NGX_POST_CONF_MSG
|
||||||
|
$0: warning: the \"--with-md5\" option is deprecated"
|
||||||
|
;;
|
||||||
|
--with-md5-opt=*)
|
||||||
|
NGX_POST_CONF_MSG="$NGX_POST_CONF_MSG
|
||||||
|
$0: warning: the \"--with-md5-opt\" option is deprecated"
|
||||||
|
;;
|
||||||
|
--with-md5-asm)
|
||||||
|
NGX_POST_CONF_MSG="$NGX_POST_CONF_MSG
|
||||||
|
$0: warning: the \"--with-md5-asm\" option is deprecated"
|
||||||
|
;;
|
||||||
|
|
||||||
|
--with-sha1=*)
|
||||||
|
NGX_POST_CONF_MSG="$NGX_POST_CONF_MSG
|
||||||
|
$0: warning: the \"--with-sha1\" option is deprecated"
|
||||||
|
;;
|
||||||
|
--with-sha1-opt=*)
|
||||||
|
NGX_POST_CONF_MSG="$NGX_POST_CONF_MSG
|
||||||
|
$0: warning: the \"--with-sha1-opt\" option is deprecated"
|
||||||
|
;;
|
||||||
|
--with-sha1-asm)
|
||||||
|
NGX_POST_CONF_MSG="$NGX_POST_CONF_MSG
|
||||||
|
$0: warning: the \"--with-sha1-asm\" option is deprecated"
|
||||||
|
;;
|
||||||
|
|
||||||
|
--with-zlib=*) ZLIB="$value" ;;
|
||||||
|
--with-zlib-opt=*) ZLIB_OPT="$value" ;;
|
||||||
|
--with-zlib-asm=*) ZLIB_ASM="$value" ;;
|
||||||
|
|
||||||
|
--with-libatomic) NGX_LIBATOMIC=YES ;;
|
||||||
|
--with-libatomic=*) NGX_LIBATOMIC="$value" ;;
|
||||||
|
|
||||||
|
--test-build-devpoll) NGX_TEST_BUILD_DEVPOLL=YES ;;
|
||||||
|
--test-build-eventport) NGX_TEST_BUILD_EVENTPORT=YES ;;
|
||||||
|
--test-build-epoll) NGX_TEST_BUILD_EPOLL=YES ;;
|
||||||
|
--test-build-solaris-sendfilev) NGX_TEST_BUILD_SOLARIS_SENDFILEV=YES ;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo "$0: error: invalid option \"$option\""
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
NGX_CONFIGURE="$opt"
|
||||||
|
|
||||||
|
|
||||||
|
if [ $help = yes ]; then
|
||||||
|
|
||||||
|
cat << END
|
||||||
|
|
||||||
|
--help print this message
|
||||||
|
|
||||||
|
--prefix=PATH set installation prefix
|
||||||
|
--sbin-path=PATH set nginx binary pathname
|
||||||
|
--modules-path=PATH set modules path
|
||||||
|
--conf-path=PATH set nginx.conf pathname
|
||||||
|
--error-log-path=PATH set error log pathname
|
||||||
|
--pid-path=PATH set nginx.pid pathname
|
||||||
|
--lock-path=PATH set nginx.lock pathname
|
||||||
|
|
||||||
|
--user=USER set non-privileged user for
|
||||||
|
worker processes
|
||||||
|
--group=GROUP set non-privileged group for
|
||||||
|
worker processes
|
||||||
|
|
||||||
|
--build=NAME set build name
|
||||||
|
--builddir=DIR set build directory
|
||||||
|
|
||||||
|
--with-select_module enable select module
|
||||||
|
--without-select_module disable select module
|
||||||
|
--with-poll_module enable poll module
|
||||||
|
--without-poll_module disable poll module
|
||||||
|
|
||||||
|
--with-threads enable thread pool support
|
||||||
|
|
||||||
|
--with-file-aio enable file AIO support
|
||||||
|
|
||||||
|
--with-http_ssl_module enable ngx_http_ssl_module
|
||||||
|
--with-http_v2_module enable ngx_http_v2_module
|
||||||
|
--with-http_realip_module enable ngx_http_realip_module
|
||||||
|
--with-http_addition_module enable ngx_http_addition_module
|
||||||
|
--with-http_xslt_module enable ngx_http_xslt_module
|
||||||
|
--with-http_xslt_module=dynamic enable dynamic ngx_http_xslt_module
|
||||||
|
--with-http_image_filter_module enable ngx_http_image_filter_module
|
||||||
|
--with-http_image_filter_module=dynamic
|
||||||
|
enable dynamic ngx_http_image_filter_module
|
||||||
|
--with-http_geoip_module enable ngx_http_geoip_module
|
||||||
|
--with-http_geoip_module=dynamic enable dynamic ngx_http_geoip_module
|
||||||
|
--with-http_sub_module enable ngx_http_sub_module
|
||||||
|
--with-http_dav_module enable ngx_http_dav_module
|
||||||
|
--with-http_flv_module enable ngx_http_flv_module
|
||||||
|
--with-http_mp4_module enable ngx_http_mp4_module
|
||||||
|
--with-http_gunzip_module enable ngx_http_gunzip_module
|
||||||
|
--with-http_gzip_static_module enable ngx_http_gzip_static_module
|
||||||
|
--with-http_auth_request_module enable ngx_http_auth_request_module
|
||||||
|
--with-http_random_index_module enable ngx_http_random_index_module
|
||||||
|
--with-http_secure_link_module enable ngx_http_secure_link_module
|
||||||
|
--with-http_degradation_module enable ngx_http_degradation_module
|
||||||
|
--with-http_slice_module enable ngx_http_slice_module
|
||||||
|
--with-http_stub_status_module enable ngx_http_stub_status_module
|
||||||
|
|
||||||
|
--without-http_charset_module disable ngx_http_charset_module
|
||||||
|
--without-http_gzip_module disable ngx_http_gzip_module
|
||||||
|
--without-http_ssi_module disable ngx_http_ssi_module
|
||||||
|
--without-http_userid_module disable ngx_http_userid_module
|
||||||
|
--without-http_access_module disable ngx_http_access_module
|
||||||
|
--without-http_auth_basic_module disable ngx_http_auth_basic_module
|
||||||
|
--without-http_mirror_module disable ngx_http_mirror_module
|
||||||
|
--without-http_autoindex_module disable ngx_http_autoindex_module
|
||||||
|
--without-http_geo_module disable ngx_http_geo_module
|
||||||
|
--without-http_map_module disable ngx_http_map_module
|
||||||
|
--without-http_split_clients_module disable ngx_http_split_clients_module
|
||||||
|
--without-http_referer_module disable ngx_http_referer_module
|
||||||
|
--without-http_rewrite_module disable ngx_http_rewrite_module
|
||||||
|
--without-http_proxy_module disable ngx_http_proxy_module
|
||||||
|
--without-http_fastcgi_module disable ngx_http_fastcgi_module
|
||||||
|
--without-http_uwsgi_module disable ngx_http_uwsgi_module
|
||||||
|
--without-http_scgi_module disable ngx_http_scgi_module
|
||||||
|
--without-http_grpc_module disable ngx_http_grpc_module
|
||||||
|
--without-http_memcached_module disable ngx_http_memcached_module
|
||||||
|
--without-http_limit_conn_module disable ngx_http_limit_conn_module
|
||||||
|
--without-http_limit_req_module disable ngx_http_limit_req_module
|
||||||
|
--without-http_empty_gif_module disable ngx_http_empty_gif_module
|
||||||
|
--without-http_browser_module disable ngx_http_browser_module
|
||||||
|
--without-http_upstream_hash_module
|
||||||
|
disable ngx_http_upstream_hash_module
|
||||||
|
--without-http_upstream_ip_hash_module
|
||||||
|
disable ngx_http_upstream_ip_hash_module
|
||||||
|
--without-http_upstream_least_conn_module
|
||||||
|
disable ngx_http_upstream_least_conn_module
|
||||||
|
--without-http_upstream_random_module
|
||||||
|
disable ngx_http_upstream_random_module
|
||||||
|
--without-http_upstream_keepalive_module
|
||||||
|
disable ngx_http_upstream_keepalive_module
|
||||||
|
--without-http_upstream_zone_module
|
||||||
|
disable ngx_http_upstream_zone_module
|
||||||
|
|
||||||
|
--with-http_perl_module enable ngx_http_perl_module
|
||||||
|
--with-http_perl_module=dynamic enable dynamic ngx_http_perl_module
|
||||||
|
--with-perl_modules_path=PATH set Perl modules path
|
||||||
|
--with-perl=PATH set perl binary pathname
|
||||||
|
|
||||||
|
--http-log-path=PATH set http access log pathname
|
||||||
|
--http-client-body-temp-path=PATH set path to store
|
||||||
|
http client request body temporary files
|
||||||
|
--http-proxy-temp-path=PATH set path to store
|
||||||
|
http proxy temporary files
|
||||||
|
--http-fastcgi-temp-path=PATH set path to store
|
||||||
|
http fastcgi temporary files
|
||||||
|
--http-uwsgi-temp-path=PATH set path to store
|
||||||
|
http uwsgi temporary files
|
||||||
|
--http-scgi-temp-path=PATH set path to store
|
||||||
|
http scgi temporary files
|
||||||
|
|
||||||
|
--without-http disable HTTP server
|
||||||
|
--without-http-cache disable HTTP cache
|
||||||
|
|
||||||
|
--with-mail enable POP3/IMAP4/SMTP proxy module
|
||||||
|
--with-mail=dynamic enable dynamic POP3/IMAP4/SMTP proxy module
|
||||||
|
--with-mail_ssl_module enable ngx_mail_ssl_module
|
||||||
|
--without-mail_pop3_module disable ngx_mail_pop3_module
|
||||||
|
--without-mail_imap_module disable ngx_mail_imap_module
|
||||||
|
--without-mail_smtp_module disable ngx_mail_smtp_module
|
||||||
|
|
||||||
|
--with-stream enable TCP/UDP proxy module
|
||||||
|
--with-stream=dynamic enable dynamic TCP/UDP proxy module
|
||||||
|
--with-stream_ssl_module enable ngx_stream_ssl_module
|
||||||
|
--with-stream_realip_module enable ngx_stream_realip_module
|
||||||
|
--with-stream_geoip_module enable ngx_stream_geoip_module
|
||||||
|
--with-stream_geoip_module=dynamic enable dynamic ngx_stream_geoip_module
|
||||||
|
--with-stream_ssl_preread_module enable ngx_stream_ssl_preread_module
|
||||||
|
--without-stream_limit_conn_module disable ngx_stream_limit_conn_module
|
||||||
|
--without-stream_access_module disable ngx_stream_access_module
|
||||||
|
--without-stream_geo_module disable ngx_stream_geo_module
|
||||||
|
--without-stream_map_module disable ngx_stream_map_module
|
||||||
|
--without-stream_split_clients_module
|
||||||
|
disable ngx_stream_split_clients_module
|
||||||
|
--without-stream_return_module disable ngx_stream_return_module
|
||||||
|
--without-stream_upstream_hash_module
|
||||||
|
disable ngx_stream_upstream_hash_module
|
||||||
|
--without-stream_upstream_least_conn_module
|
||||||
|
disable ngx_stream_upstream_least_conn_module
|
||||||
|
--without-stream_upstream_random_module
|
||||||
|
disable ngx_stream_upstream_random_module
|
||||||
|
--without-stream_upstream_zone_module
|
||||||
|
disable ngx_stream_upstream_zone_module
|
||||||
|
|
||||||
|
--with-google_perftools_module enable ngx_google_perftools_module
|
||||||
|
--with-cpp_test_module enable ngx_cpp_test_module
|
||||||
|
|
||||||
|
--add-module=PATH enable external module
|
||||||
|
--add-dynamic-module=PATH enable dynamic external module
|
||||||
|
|
||||||
|
--with-compat dynamic modules compatibility
|
||||||
|
|
||||||
|
--with-cc=PATH set C compiler pathname
|
||||||
|
--with-cpp=PATH set C preprocessor pathname
|
||||||
|
--with-cc-opt=OPTIONS set additional C compiler options
|
||||||
|
--with-ld-opt=OPTIONS set additional linker options
|
||||||
|
--with-cpu-opt=CPU build for the specified CPU, valid values:
|
||||||
|
pentium, pentiumpro, pentium3, pentium4,
|
||||||
|
athlon, opteron, sparc32, sparc64, ppc64
|
||||||
|
|
||||||
|
--without-pcre disable PCRE library usage
|
||||||
|
--with-pcre force PCRE library usage
|
||||||
|
--with-pcre=DIR set path to PCRE library sources
|
||||||
|
--with-pcre-opt=OPTIONS set additional build options for PCRE
|
||||||
|
--with-pcre-jit build PCRE with JIT compilation support
|
||||||
|
|
||||||
|
--with-zlib=DIR set path to zlib library sources
|
||||||
|
--with-zlib-opt=OPTIONS set additional build options for zlib
|
||||||
|
--with-zlib-asm=CPU use zlib assembler sources optimized
|
||||||
|
for the specified CPU, valid values:
|
||||||
|
pentium, pentiumpro
|
||||||
|
|
||||||
|
--with-libatomic force libatomic_ops library usage
|
||||||
|
--with-libatomic=DIR set path to libatomic_ops library sources
|
||||||
|
|
||||||
|
--with-openssl=DIR set path to OpenSSL library sources
|
||||||
|
--with-openssl-opt=OPTIONS set additional build options for OpenSSL
|
||||||
|
|
||||||
|
--with-debug enable debug logging
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ ".$NGX_PLATFORM" = ".win32" ]; then
|
||||||
|
NGX_WINE=$WINE
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
NGX_SBIN_PATH=${NGX_SBIN_PATH:-sbin/nginx}
|
||||||
|
NGX_MODULES_PATH=${NGX_MODULES_PATH:-modules}
|
||||||
|
NGX_CONF_PATH=${NGX_CONF_PATH:-conf/nginx.conf}
|
||||||
|
NGX_CONF_PREFIX=`dirname $NGX_CONF_PATH`
|
||||||
|
NGX_PID_PATH=${NGX_PID_PATH:-logs/nginx.pid}
|
||||||
|
NGX_LOCK_PATH=${NGX_LOCK_PATH:-logs/nginx.lock}
|
||||||
|
|
||||||
|
if [ ".$NGX_ERROR_LOG_PATH" = ".stderr" ]; then
|
||||||
|
NGX_ERROR_LOG_PATH=
|
||||||
|
else
|
||||||
|
NGX_ERROR_LOG_PATH=${NGX_ERROR_LOG_PATH:-logs/error.log}
|
||||||
|
fi
|
||||||
|
|
||||||
|
NGX_HTTP_LOG_PATH=${NGX_HTTP_LOG_PATH:-logs/access.log}
|
||||||
|
NGX_HTTP_CLIENT_TEMP_PATH=${NGX_HTTP_CLIENT_TEMP_PATH:-client_body_temp}
|
||||||
|
NGX_HTTP_PROXY_TEMP_PATH=${NGX_HTTP_PROXY_TEMP_PATH:-proxy_temp}
|
||||||
|
NGX_HTTP_FASTCGI_TEMP_PATH=${NGX_HTTP_FASTCGI_TEMP_PATH:-fastcgi_temp}
|
||||||
|
NGX_HTTP_UWSGI_TEMP_PATH=${NGX_HTTP_UWSGI_TEMP_PATH:-uwsgi_temp}
|
||||||
|
NGX_HTTP_SCGI_TEMP_PATH=${NGX_HTTP_SCGI_TEMP_PATH:-scgi_temp}
|
||||||
|
|
||||||
|
case ".$NGX_PERL_MODULES" in
|
||||||
|
./*)
|
||||||
|
;;
|
||||||
|
|
||||||
|
.)
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
NGX_PERL_MODULES=$NGX_PREFIX/$NGX_PERL_MODULES
|
||||||
|
;;
|
||||||
|
esac
|
@ -0,0 +1,129 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
echo "checking for $NGX_SYSTEM specific features"
|
||||||
|
|
||||||
|
case "$NGX_PLATFORM" in
|
||||||
|
|
||||||
|
FreeBSD:*)
|
||||||
|
. auto/os/freebsd
|
||||||
|
;;
|
||||||
|
|
||||||
|
Linux:*)
|
||||||
|
. auto/os/linux
|
||||||
|
;;
|
||||||
|
|
||||||
|
SunOS:*)
|
||||||
|
. auto/os/solaris
|
||||||
|
;;
|
||||||
|
|
||||||
|
Darwin:*)
|
||||||
|
. auto/os/darwin
|
||||||
|
;;
|
||||||
|
|
||||||
|
win32)
|
||||||
|
. auto/os/win32
|
||||||
|
;;
|
||||||
|
|
||||||
|
DragonFly:*)
|
||||||
|
have=NGX_FREEBSD . auto/have_headers
|
||||||
|
CORE_INCS="$UNIX_INCS"
|
||||||
|
CORE_DEPS="$UNIX_DEPS $FREEBSD_DEPS"
|
||||||
|
CORE_SRCS="$UNIX_SRCS $FREEBSD_SRCS"
|
||||||
|
|
||||||
|
echo " + sendfile() found"
|
||||||
|
have=NGX_HAVE_SENDFILE . auto/have
|
||||||
|
CORE_SRCS="$CORE_SRCS $FREEBSD_SENDFILE_SRCS"
|
||||||
|
|
||||||
|
ngx_spacer='
|
||||||
|
'
|
||||||
|
;;
|
||||||
|
|
||||||
|
NetBSD:*)
|
||||||
|
CORE_INCS="$UNIX_INCS"
|
||||||
|
CORE_DEPS="$UNIX_DEPS $POSIX_DEPS"
|
||||||
|
CORE_SRCS="$UNIX_SRCS"
|
||||||
|
|
||||||
|
NGX_RPATH=YES
|
||||||
|
;;
|
||||||
|
|
||||||
|
HP-UX:*)
|
||||||
|
# HP/UX
|
||||||
|
have=NGX_HPUX . auto/have_headers
|
||||||
|
CORE_INCS="$UNIX_INCS"
|
||||||
|
CORE_DEPS="$UNIX_DEPS $POSIX_DEPS"
|
||||||
|
CORE_SRCS="$UNIX_SRCS"
|
||||||
|
CC_AUX_FLAGS="$CC_AUX_FLAGS -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1"
|
||||||
|
CC_AUX_FLAGS="$CC_AUX_FLAGS -D_HPUX_ALT_XOPEN_SOCKET_API"
|
||||||
|
;;
|
||||||
|
|
||||||
|
OSF1:*)
|
||||||
|
# Tru64 UNIX
|
||||||
|
have=NGX_TRU64 . auto/have_headers
|
||||||
|
have=NGX_HAVE_STRERROR_R . auto/nohave
|
||||||
|
CORE_INCS="$UNIX_INCS"
|
||||||
|
CORE_DEPS="$UNIX_DEPS $POSIX_DEPS"
|
||||||
|
CORE_SRCS="$UNIX_SRCS"
|
||||||
|
;;
|
||||||
|
|
||||||
|
GNU:*)
|
||||||
|
# GNU Hurd
|
||||||
|
have=NGX_GNU_HURD . auto/have_headers
|
||||||
|
CORE_INCS="$UNIX_INCS"
|
||||||
|
CORE_DEPS="$UNIX_DEPS $POSIX_DEPS"
|
||||||
|
CORE_SRCS="$UNIX_SRCS"
|
||||||
|
CC_AUX_FLAGS="$CC_AUX_FLAGS -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64"
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
CORE_INCS="$UNIX_INCS"
|
||||||
|
CORE_DEPS="$UNIX_DEPS $POSIX_DEPS"
|
||||||
|
CORE_SRCS="$UNIX_SRCS"
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
case "$NGX_MACHINE" in
|
||||||
|
|
||||||
|
i386 | i686 | i86pc)
|
||||||
|
have=NGX_HAVE_NONALIGNED . auto/have
|
||||||
|
NGX_MACH_CACHE_LINE=32
|
||||||
|
;;
|
||||||
|
|
||||||
|
amd64 | x86_64)
|
||||||
|
have=NGX_HAVE_NONALIGNED . auto/have
|
||||||
|
NGX_MACH_CACHE_LINE=64
|
||||||
|
;;
|
||||||
|
|
||||||
|
sun4u | sun4v | sparc | sparc64)
|
||||||
|
have=NGX_ALIGNMENT value=16 . auto/define
|
||||||
|
# TODO
|
||||||
|
NGX_MACH_CACHE_LINE=64
|
||||||
|
;;
|
||||||
|
|
||||||
|
ia64 )
|
||||||
|
have=NGX_ALIGNMENT value=16 . auto/define
|
||||||
|
# TODO
|
||||||
|
NGX_MACH_CACHE_LINE=64
|
||||||
|
;;
|
||||||
|
|
||||||
|
aarch64 )
|
||||||
|
have=NGX_ALIGNMENT value=16 . auto/define
|
||||||
|
NGX_MACH_CACHE_LINE=64
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
have=NGX_ALIGNMENT value=16 . auto/define
|
||||||
|
NGX_MACH_CACHE_LINE=32
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
if test -z "$NGX_CPU_CACHE_LINE"; then
|
||||||
|
NGX_CPU_CACHE_LINE=$NGX_MACH_CACHE_LINE
|
||||||
|
fi
|
||||||
|
|
||||||
|
have=NGX_CPU_CACHE_LINE value=$NGX_CPU_CACHE_LINE . auto/define
|
@ -0,0 +1,120 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
have=NGX_DARWIN . auto/have_headers
|
||||||
|
|
||||||
|
CORE_INCS="$UNIX_INCS"
|
||||||
|
CORE_DEPS="$UNIX_DEPS $DARWIN_DEPS"
|
||||||
|
CORE_SRCS="$UNIX_SRCS $DARWIN_SRCS"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ngx_spacer='
|
||||||
|
'
|
||||||
|
|
||||||
|
MAIN_LINK=
|
||||||
|
MODULE_LINK="-shared -Wl,-undefined,dynamic_lookup"
|
||||||
|
|
||||||
|
CC_AUX_FLAGS="$CC_AUX_FLAGS -D__APPLE_USE_RFC_3542"
|
||||||
|
|
||||||
|
|
||||||
|
# kqueue
|
||||||
|
|
||||||
|
echo " + kqueue found"
|
||||||
|
have=NGX_HAVE_KQUEUE . auto/have
|
||||||
|
have=NGX_HAVE_CLEAR_EVENT . auto/have
|
||||||
|
EVENT_MODULES="$EVENT_MODULES $KQUEUE_MODULE"
|
||||||
|
CORE_SRCS="$CORE_SRCS $KQUEUE_SRCS"
|
||||||
|
EVENT_FOUND=YES
|
||||||
|
NGX_KQUEUE_CHECKED=YES
|
||||||
|
|
||||||
|
ngx_feature="kqueue's EVFILT_TIMER"
|
||||||
|
ngx_feature_name="NGX_HAVE_TIMER_EVENT"
|
||||||
|
ngx_feature_run=yes
|
||||||
|
ngx_feature_incs="#include <sys/event.h>
|
||||||
|
#include <sys/time.h>"
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=
|
||||||
|
ngx_feature_test="int kq;
|
||||||
|
struct kevent kev;
|
||||||
|
struct timespec ts;
|
||||||
|
|
||||||
|
if ((kq = kqueue()) == -1) return 1;
|
||||||
|
|
||||||
|
kev.ident = 0;
|
||||||
|
kev.filter = EVFILT_TIMER;
|
||||||
|
kev.flags = EV_ADD|EV_ENABLE;
|
||||||
|
kev.fflags = 0;
|
||||||
|
kev.data = 1000;
|
||||||
|
kev.udata = 0;
|
||||||
|
|
||||||
|
ts.tv_sec = 0;
|
||||||
|
ts.tv_nsec = 0;
|
||||||
|
|
||||||
|
if (kevent(kq, &kev, 1, &kev, 1, &ts) == -1) return 1;
|
||||||
|
|
||||||
|
if (kev.flags & EV_ERROR) return 1;"
|
||||||
|
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
|
||||||
|
ngx_feature="Darwin 64-bit kqueue millisecond timeout bug"
|
||||||
|
ngx_feature_name=NGX_DARWIN_KEVENT_BUG
|
||||||
|
ngx_feature_run=bug
|
||||||
|
ngx_feature_incs="#include <sys/event.h>
|
||||||
|
#include <sys/time.h>"
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=
|
||||||
|
ngx_feature_test="int kq;
|
||||||
|
struct kevent kev;
|
||||||
|
struct timespec ts;
|
||||||
|
struct timeval tv, tv0;
|
||||||
|
|
||||||
|
kq = kqueue();
|
||||||
|
|
||||||
|
ts.tv_sec = 0;
|
||||||
|
ts.tv_nsec = 999000000;
|
||||||
|
|
||||||
|
gettimeofday(&tv, 0);
|
||||||
|
kevent(kq, NULL, 0, &kev, 1, &ts);
|
||||||
|
gettimeofday(&tv0, 0);
|
||||||
|
timersub(&tv0, &tv, &tv);
|
||||||
|
|
||||||
|
if (tv.tv_sec * 1000000 + tv.tv_usec < 900000) return 1;"
|
||||||
|
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
|
||||||
|
# sendfile()
|
||||||
|
|
||||||
|
ngx_feature="sendfile()"
|
||||||
|
ngx_feature_name="NGX_HAVE_SENDFILE"
|
||||||
|
ngx_feature_run=yes
|
||||||
|
ngx_feature_incs="#include <sys/types.h>
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#include <sys/uio.h>
|
||||||
|
#include <sys/errno.h>"
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=
|
||||||
|
ngx_feature_test="int s = 0, fd = 1;
|
||||||
|
off_t n; off_t off = 0;
|
||||||
|
n = sendfile(s, fd, off, &n, NULL, 0);
|
||||||
|
if (n == -1 && errno == ENOSYS) return 1"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
if [ $ngx_found = yes ]; then
|
||||||
|
CORE_SRCS="$CORE_SRCS $DARWIN_SENDFILE_SRCS"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
ngx_feature="atomic(3)"
|
||||||
|
ngx_feature_name=NGX_DARWIN_ATOMIC
|
||||||
|
ngx_feature_run=no
|
||||||
|
ngx_feature_incs="#include <libkern/OSAtomic.h>"
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=
|
||||||
|
ngx_feature_test="int32_t lock = 0;
|
||||||
|
if (!OSAtomicCompareAndSwap32Barrier(0, 1, &lock)) return 1"
|
||||||
|
. auto/feature
|
@ -0,0 +1,107 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
have=NGX_FREEBSD . auto/have_headers
|
||||||
|
|
||||||
|
CORE_INCS="$UNIX_INCS"
|
||||||
|
CORE_DEPS="$UNIX_DEPS $FREEBSD_DEPS"
|
||||||
|
CORE_SRCS="$UNIX_SRCS $FREEBSD_SRCS"
|
||||||
|
|
||||||
|
ngx_spacer='
|
||||||
|
'
|
||||||
|
|
||||||
|
|
||||||
|
# __FreeBSD_version and sysctl kern.osreldate are the best ways
|
||||||
|
# to determine whether some capability exists and is safe to use.
|
||||||
|
# __FreeBSD_version is used for the testing of the build environment.
|
||||||
|
# sysctl kern.osreldate is used for the testing of the kernel capabilities.
|
||||||
|
|
||||||
|
version=`grep "#define __FreeBSD_version" /usr/include/osreldate.h \
|
||||||
|
| sed -e 's/^.* \(.*\)$/\1/'`
|
||||||
|
|
||||||
|
osreldate=`/sbin/sysctl -n kern.osreldate`
|
||||||
|
|
||||||
|
|
||||||
|
# setproctitle() in libutil
|
||||||
|
|
||||||
|
if [ \( $version -ge 500000 -a $version -lt 500012 \) \
|
||||||
|
-o $version -lt 410002 ]
|
||||||
|
then
|
||||||
|
echo " + setproctitle() in libutil"
|
||||||
|
|
||||||
|
CORE_LIBS="$CORE_LIBS -lutil"
|
||||||
|
NGX_SETPROCTITLE_LIB="-lutil"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# sendfile
|
||||||
|
|
||||||
|
if [ $osreldate -gt 300007 ]; then
|
||||||
|
echo " + sendfile() found"
|
||||||
|
|
||||||
|
have=NGX_HAVE_SENDFILE . auto/have
|
||||||
|
CORE_SRCS="$CORE_SRCS $FREEBSD_SENDFILE_SRCS"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $NGX_FILE_AIO = YES ]; then
|
||||||
|
if [ $osreldate -gt 502103 ]; then
|
||||||
|
echo " + sendfile()'s SF_NODISKIO found"
|
||||||
|
|
||||||
|
have=NGX_HAVE_AIO_SENDFILE . auto/have
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# POSIX semaphores
|
||||||
|
# http://www.freebsd.org/cgi/query-pr.cgi?pr=kern/127545
|
||||||
|
|
||||||
|
if [ $osreldate -ge 701106 ]; then
|
||||||
|
echo " + POSIX semaphores should work"
|
||||||
|
else
|
||||||
|
have=NGX_HAVE_POSIX_SEM . auto/nohave
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# kqueue
|
||||||
|
|
||||||
|
if [ \( $osreldate -lt 500000 -a $osreldate -ge 410000 \) \
|
||||||
|
-o $osreldate -ge 500011 ]
|
||||||
|
then
|
||||||
|
echo " + kqueue found"
|
||||||
|
|
||||||
|
have=NGX_HAVE_KQUEUE . auto/have
|
||||||
|
have=NGX_HAVE_CLEAR_EVENT . auto/have
|
||||||
|
EVENT_MODULES="$EVENT_MODULES $KQUEUE_MODULE"
|
||||||
|
CORE_SRCS="$CORE_SRCS $KQUEUE_SRCS"
|
||||||
|
EVENT_FOUND=YES
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
NGX_KQUEUE_CHECKED=YES
|
||||||
|
|
||||||
|
|
||||||
|
# kqueue's NOTE_LOWAT
|
||||||
|
|
||||||
|
if [ \( $version -lt 500000 -a $version -ge 430000 \) \
|
||||||
|
-o $version -ge 500018 ]
|
||||||
|
then
|
||||||
|
echo " + kqueue's NOTE_LOWAT found"
|
||||||
|
have=NGX_HAVE_LOWAT_EVENT . auto/have
|
||||||
|
fi
|
||||||
|
|
||||||
|
# kqueue's EVFILT_TIMER
|
||||||
|
|
||||||
|
if [ \( $version -lt 500000 -a $version -ge 440001 \) \
|
||||||
|
-o $version -ge 500023 ]
|
||||||
|
then
|
||||||
|
echo " + kqueue's EVFILT_TIMER found"
|
||||||
|
have=NGX_HAVE_TIMER_EVENT . auto/have
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# cpuset_setaffinity()
|
||||||
|
|
||||||
|
if [ $version -ge 701000 ]; then
|
||||||
|
echo " + cpuset_setaffinity() found"
|
||||||
|
have=NGX_HAVE_CPUSET_SETAFFINITY . auto/have
|
||||||
|
fi
|
@ -0,0 +1,210 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
have=NGX_LINUX . auto/have_headers
|
||||||
|
|
||||||
|
CORE_INCS="$UNIX_INCS"
|
||||||
|
CORE_DEPS="$UNIX_DEPS $LINUX_DEPS"
|
||||||
|
CORE_SRCS="$UNIX_SRCS $LINUX_SRCS"
|
||||||
|
|
||||||
|
ngx_spacer='
|
||||||
|
'
|
||||||
|
|
||||||
|
cc_aux_flags="$CC_AUX_FLAGS"
|
||||||
|
CC_AUX_FLAGS="$cc_aux_flags -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64"
|
||||||
|
|
||||||
|
|
||||||
|
# Linux kernel version
|
||||||
|
|
||||||
|
version=$((`uname -r \
|
||||||
|
| sed -n -e 's/^\([0-9][0-9]*\)\.\([0-9][0-9]*\)\.\([0-9][0-9]*\).*/ \
|
||||||
|
\1*256*256+\2*256+\3/p' \
|
||||||
|
-e 's/^\([0-9][0-9]*\)\.\([0-9][0-9]*\).*/\1*256*256+\2*256/p'`))
|
||||||
|
|
||||||
|
version=${version:-0}
|
||||||
|
|
||||||
|
|
||||||
|
# posix_fadvise64() had been implemented in 2.5.60
|
||||||
|
|
||||||
|
if [ $version -lt 132412 ]; then
|
||||||
|
have=NGX_HAVE_POSIX_FADVISE . auto/nohave
|
||||||
|
fi
|
||||||
|
|
||||||
|
# epoll, EPOLLET version
|
||||||
|
|
||||||
|
ngx_feature="epoll"
|
||||||
|
ngx_feature_name="NGX_HAVE_EPOLL"
|
||||||
|
ngx_feature_run=yes
|
||||||
|
ngx_feature_incs="#include <sys/epoll.h>"
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=
|
||||||
|
ngx_feature_test="int efd = 0;
|
||||||
|
struct epoll_event ee;
|
||||||
|
ee.events = EPOLLIN|EPOLLOUT|EPOLLET;
|
||||||
|
ee.data.ptr = NULL;
|
||||||
|
(void) ee;
|
||||||
|
efd = epoll_create(100);
|
||||||
|
if (efd == -1) return 1;"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
if [ $ngx_found = yes ]; then
|
||||||
|
have=NGX_HAVE_CLEAR_EVENT . auto/have
|
||||||
|
CORE_SRCS="$CORE_SRCS $EPOLL_SRCS"
|
||||||
|
EVENT_MODULES="$EVENT_MODULES $EPOLL_MODULE"
|
||||||
|
EVENT_FOUND=YES
|
||||||
|
|
||||||
|
|
||||||
|
# EPOLLRDHUP appeared in Linux 2.6.17, glibc 2.8
|
||||||
|
|
||||||
|
ngx_feature="EPOLLRDHUP"
|
||||||
|
ngx_feature_name="NGX_HAVE_EPOLLRDHUP"
|
||||||
|
ngx_feature_run=no
|
||||||
|
ngx_feature_incs="#include <sys/epoll.h>"
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=
|
||||||
|
ngx_feature_test="int efd = 0, fd = 0;
|
||||||
|
struct epoll_event ee;
|
||||||
|
ee.events = EPOLLIN|EPOLLRDHUP|EPOLLET;
|
||||||
|
ee.data.ptr = NULL;
|
||||||
|
epoll_ctl(efd, EPOLL_CTL_ADD, fd, &ee)"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
|
||||||
|
# EPOLLEXCLUSIVE appeared in Linux 4.5, glibc 2.24
|
||||||
|
|
||||||
|
ngx_feature="EPOLLEXCLUSIVE"
|
||||||
|
ngx_feature_name="NGX_HAVE_EPOLLEXCLUSIVE"
|
||||||
|
ngx_feature_run=no
|
||||||
|
ngx_feature_incs="#include <sys/epoll.h>"
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=
|
||||||
|
ngx_feature_test="int efd = 0, fd = 0;
|
||||||
|
struct epoll_event ee;
|
||||||
|
ee.events = EPOLLIN|EPOLLEXCLUSIVE;
|
||||||
|
ee.data.ptr = NULL;
|
||||||
|
epoll_ctl(efd, EPOLL_CTL_ADD, fd, &ee)"
|
||||||
|
. auto/feature
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# O_PATH and AT_EMPTY_PATH were introduced in 2.6.39, glibc 2.14
|
||||||
|
|
||||||
|
ngx_feature="O_PATH"
|
||||||
|
ngx_feature_name="NGX_HAVE_O_PATH"
|
||||||
|
ngx_feature_run=no
|
||||||
|
ngx_feature_incs="#include <sys/types.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <fcntl.h>"
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=
|
||||||
|
ngx_feature_test="int fd; struct stat sb;
|
||||||
|
fd = openat(AT_FDCWD, \".\", O_PATH|O_DIRECTORY|O_NOFOLLOW);
|
||||||
|
if (fstatat(fd, \"\", &sb, AT_EMPTY_PATH) != 0) return 1"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
|
||||||
|
# sendfile()
|
||||||
|
|
||||||
|
CC_AUX_FLAGS="$cc_aux_flags -D_GNU_SOURCE"
|
||||||
|
ngx_feature="sendfile()"
|
||||||
|
ngx_feature_name="NGX_HAVE_SENDFILE"
|
||||||
|
ngx_feature_run=yes
|
||||||
|
ngx_feature_incs="#include <sys/sendfile.h>
|
||||||
|
#include <errno.h>"
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=
|
||||||
|
ngx_feature_test="int s = 0, fd = 1;
|
||||||
|
ssize_t n; off_t off = 0;
|
||||||
|
n = sendfile(s, fd, &off, 1);
|
||||||
|
if (n == -1 && errno == ENOSYS) return 1"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
if [ $ngx_found = yes ]; then
|
||||||
|
CORE_SRCS="$CORE_SRCS $LINUX_SENDFILE_SRCS"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# sendfile64()
|
||||||
|
|
||||||
|
CC_AUX_FLAGS="$cc_aux_flags -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64"
|
||||||
|
ngx_feature="sendfile64()"
|
||||||
|
ngx_feature_name="NGX_HAVE_SENDFILE64"
|
||||||
|
ngx_feature_run=yes
|
||||||
|
ngx_feature_incs="#include <sys/sendfile.h>
|
||||||
|
#include <errno.h>"
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=
|
||||||
|
ngx_feature_test="int s = 0, fd = 1;
|
||||||
|
ssize_t n; off_t off = 0;
|
||||||
|
n = sendfile(s, fd, &off, 1);
|
||||||
|
if (n == -1 && errno == ENOSYS) return 1"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
|
||||||
|
ngx_include="sys/prctl.h"; . auto/include
|
||||||
|
|
||||||
|
# prctl(PR_SET_DUMPABLE)
|
||||||
|
|
||||||
|
ngx_feature="prctl(PR_SET_DUMPABLE)"
|
||||||
|
ngx_feature_name="NGX_HAVE_PR_SET_DUMPABLE"
|
||||||
|
ngx_feature_run=yes
|
||||||
|
ngx_feature_incs="#include <sys/prctl.h>"
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=
|
||||||
|
ngx_feature_test="if (prctl(PR_SET_DUMPABLE, 1, 0, 0, 0) == -1) return 1"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
|
||||||
|
# prctl(PR_SET_KEEPCAPS)
|
||||||
|
|
||||||
|
ngx_feature="prctl(PR_SET_KEEPCAPS)"
|
||||||
|
ngx_feature_name="NGX_HAVE_PR_SET_KEEPCAPS"
|
||||||
|
ngx_feature_run=yes
|
||||||
|
ngx_feature_incs="#include <sys/prctl.h>"
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=
|
||||||
|
ngx_feature_test="if (prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0) == -1) return 1"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
|
||||||
|
# capabilities
|
||||||
|
|
||||||
|
ngx_feature="capabilities"
|
||||||
|
ngx_feature_name="NGX_HAVE_CAPABILITIES"
|
||||||
|
ngx_feature_run=no
|
||||||
|
ngx_feature_incs="#include <linux/capability.h>
|
||||||
|
#include <sys/syscall.h>"
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=
|
||||||
|
ngx_feature_test="struct __user_cap_data_struct data;
|
||||||
|
struct __user_cap_header_struct header;
|
||||||
|
|
||||||
|
header.version = _LINUX_CAPABILITY_VERSION_1;
|
||||||
|
data.effective = CAP_TO_MASK(CAP_NET_RAW);
|
||||||
|
data.permitted = 0;
|
||||||
|
|
||||||
|
(void) header;
|
||||||
|
(void) data;
|
||||||
|
(void) SYS_capset"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
|
||||||
|
# crypt_r()
|
||||||
|
|
||||||
|
ngx_feature="crypt_r()"
|
||||||
|
ngx_feature_name="NGX_HAVE_GNU_CRYPT_R"
|
||||||
|
ngx_feature_run=no
|
||||||
|
ngx_feature_incs="#include <crypt.h>"
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=-lcrypt
|
||||||
|
ngx_feature_test="struct crypt_data cd;
|
||||||
|
crypt_r(\"key\", \"salt\", &cd);"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
|
||||||
|
ngx_include="sys/vfs.h"; . auto/include
|
||||||
|
|
||||||
|
|
||||||
|
CC_AUX_FLAGS="$cc_aux_flags -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64"
|
@ -0,0 +1,61 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
have=NGX_SOLARIS . auto/have_headers
|
||||||
|
|
||||||
|
CORE_INCS="$UNIX_INCS"
|
||||||
|
CORE_DEPS="$UNIX_DEPS $SOLARIS_DEPS"
|
||||||
|
CORE_SRCS="$UNIX_SRCS $SOLARIS_SRCS "
|
||||||
|
CORE_LIBS="$CORE_LIBS -lsocket -lnsl"
|
||||||
|
|
||||||
|
NGX_RPATH=YES
|
||||||
|
|
||||||
|
# Solaris's make does not support a blank line between target and rules
|
||||||
|
ngx_spacer=
|
||||||
|
|
||||||
|
CC_AUX_FLAGS="$CC_AUX_FLAGS -D_FILE_OFFSET_BITS=64 -lsocket -lnsl"
|
||||||
|
|
||||||
|
|
||||||
|
if [ $ZLIB_ASM != NO ]; then
|
||||||
|
echo "$0: error: the --with-zlib-asm=CPU option is not supported"
|
||||||
|
echo "on that platform"
|
||||||
|
echo
|
||||||
|
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
ngx_feature="sendfilev()"
|
||||||
|
ngx_feature_name="NGX_HAVE_SENDFILE"
|
||||||
|
ngx_feature_run=no
|
||||||
|
ngx_feature_incs="#include <sys/sendfile.h>"
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs="-lsendfile"
|
||||||
|
ngx_feature_test="int fd = 1; sendfilevec_t vec[1];
|
||||||
|
size_t sent; ssize_t n;
|
||||||
|
n = sendfilev(fd, vec, 1, &sent);
|
||||||
|
if (n == -1) return 1"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
|
||||||
|
if [ $ngx_found = yes ]; then
|
||||||
|
CORE_SRCS="$CORE_SRCS $SOLARIS_SENDFILEV_SRCS"
|
||||||
|
CORE_LIBS="$CORE_LIBS -lsendfile"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
ngx_feature="event ports"
|
||||||
|
ngx_feature_name="NGX_HAVE_EVENTPORT"
|
||||||
|
ngx_feature_run=no
|
||||||
|
ngx_feature_incs="#include <port.h>"
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=
|
||||||
|
ngx_feature_test="(void) port_create()"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
if [ $ngx_found = yes ]; then
|
||||||
|
CORE_SRCS="$CORE_SRCS $EVENTPORT_SRCS"
|
||||||
|
EVENT_MODULES="$EVENT_MODULES $EVENTPORT_MODULE"
|
||||||
|
fi
|
@ -0,0 +1,39 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
have=NGX_WIN32 . auto/have_headers
|
||||||
|
|
||||||
|
CORE_INCS="$WIN32_INCS"
|
||||||
|
CORE_DEPS="$WIN32_DEPS"
|
||||||
|
CORE_SRCS="$WIN32_SRCS $IOCP_SRCS"
|
||||||
|
OS_CONFIG="$WIN32_CONFIG"
|
||||||
|
NGX_ICONS="$NGX_WIN32_ICONS"
|
||||||
|
SELECT_SRCS=$WIN32_SELECT_SRCS
|
||||||
|
POLL_SRCS=$WIN32_POLL_SRCS
|
||||||
|
|
||||||
|
ngx_pic_opt=
|
||||||
|
ngx_binext=".exe"
|
||||||
|
|
||||||
|
case "$NGX_CC_NAME" in
|
||||||
|
|
||||||
|
gcc)
|
||||||
|
CORE_LIBS="$CORE_LIBS -ladvapi32 -lws2_32"
|
||||||
|
MAIN_LINK="$MAIN_LINK -Wl,--export-all-symbols"
|
||||||
|
MAIN_LINK="$MAIN_LINK -Wl,--out-implib=$NGX_OBJS/libnginx.a"
|
||||||
|
MODULE_LINK="-shared -L $NGX_OBJS -lnginx"
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
CORE_LIBS="$CORE_LIBS advapi32.lib ws2_32.lib"
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
EVENT_MODULES="$EVENT_MODULES $IOCP_MODULE"
|
||||||
|
#EVENT_FOUND=YES
|
||||||
|
|
||||||
|
have=NGX_HAVE_INET6 . auto/have
|
||||||
|
|
||||||
|
have=NGX_HAVE_IOCP . auto/have
|
@ -0,0 +1,257 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
CORE_MODULES="ngx_core_module ngx_errlog_module ngx_conf_module"
|
||||||
|
|
||||||
|
CORE_INCS="src/core"
|
||||||
|
|
||||||
|
CORE_DEPS="src/core/nginx.h \
|
||||||
|
src/core/ngx_config.h \
|
||||||
|
src/core/ngx_core.h \
|
||||||
|
src/core/ngx_log.h \
|
||||||
|
src/core/ngx_palloc.h \
|
||||||
|
src/core/ngx_array.h \
|
||||||
|
src/core/ngx_list.h \
|
||||||
|
src/core/ngx_hash.h \
|
||||||
|
src/core/ngx_buf.h \
|
||||||
|
src/core/ngx_queue.h \
|
||||||
|
src/core/ngx_string.h \
|
||||||
|
src/core/ngx_parse.h \
|
||||||
|
src/core/ngx_parse_time.h \
|
||||||
|
src/core/ngx_inet.h \
|
||||||
|
src/core/ngx_file.h \
|
||||||
|
src/core/ngx_crc.h \
|
||||||
|
src/core/ngx_crc32.h \
|
||||||
|
src/core/ngx_murmurhash.h \
|
||||||
|
src/core/ngx_md5.h \
|
||||||
|
src/core/ngx_sha1.h \
|
||||||
|
src/core/ngx_rbtree.h \
|
||||||
|
src/core/ngx_radix_tree.h \
|
||||||
|
src/core/ngx_rwlock.h \
|
||||||
|
src/core/ngx_slab.h \
|
||||||
|
src/core/ngx_times.h \
|
||||||
|
src/core/ngx_shmtx.h \
|
||||||
|
src/core/ngx_connection.h \
|
||||||
|
src/core/ngx_cycle.h \
|
||||||
|
src/core/ngx_conf_file.h \
|
||||||
|
src/core/ngx_module.h \
|
||||||
|
src/core/ngx_resolver.h \
|
||||||
|
src/core/ngx_open_file_cache.h \
|
||||||
|
src/core/ngx_crypt.h \
|
||||||
|
src/core/ngx_proxy_protocol.h \
|
||||||
|
src/core/ngx_syslog.h"
|
||||||
|
|
||||||
|
|
||||||
|
CORE_SRCS="src/core/nginx.c \
|
||||||
|
src/core/ngx_log.c \
|
||||||
|
src/core/ngx_palloc.c \
|
||||||
|
src/core/ngx_array.c \
|
||||||
|
src/core/ngx_list.c \
|
||||||
|
src/core/ngx_hash.c \
|
||||||
|
src/core/ngx_buf.c \
|
||||||
|
src/core/ngx_queue.c \
|
||||||
|
src/core/ngx_output_chain.c \
|
||||||
|
src/core/ngx_string.c \
|
||||||
|
src/core/ngx_parse.c \
|
||||||
|
src/core/ngx_parse_time.c \
|
||||||
|
src/core/ngx_inet.c \
|
||||||
|
src/core/ngx_file.c \
|
||||||
|
src/core/ngx_crc32.c \
|
||||||
|
src/core/ngx_murmurhash.c \
|
||||||
|
src/core/ngx_md5.c \
|
||||||
|
src/core/ngx_sha1.c \
|
||||||
|
src/core/ngx_rbtree.c \
|
||||||
|
src/core/ngx_radix_tree.c \
|
||||||
|
src/core/ngx_slab.c \
|
||||||
|
src/core/ngx_times.c \
|
||||||
|
src/core/ngx_shmtx.c \
|
||||||
|
src/core/ngx_connection.c \
|
||||||
|
src/core/ngx_cycle.c \
|
||||||
|
src/core/ngx_spinlock.c \
|
||||||
|
src/core/ngx_rwlock.c \
|
||||||
|
src/core/ngx_cpuinfo.c \
|
||||||
|
src/core/ngx_conf_file.c \
|
||||||
|
src/core/ngx_module.c \
|
||||||
|
src/core/ngx_resolver.c \
|
||||||
|
src/core/ngx_open_file_cache.c \
|
||||||
|
src/core/ngx_crypt.c \
|
||||||
|
src/core/ngx_proxy_protocol.c \
|
||||||
|
src/core/ngx_syslog.c"
|
||||||
|
|
||||||
|
|
||||||
|
EVENT_MODULES="ngx_events_module ngx_event_core_module"
|
||||||
|
|
||||||
|
EVENT_INCS="src/event src/event/modules"
|
||||||
|
|
||||||
|
EVENT_DEPS="src/event/ngx_event.h \
|
||||||
|
src/event/ngx_event_timer.h \
|
||||||
|
src/event/ngx_event_posted.h \
|
||||||
|
src/event/ngx_event_connect.h \
|
||||||
|
src/event/ngx_event_pipe.h"
|
||||||
|
|
||||||
|
EVENT_SRCS="src/event/ngx_event.c \
|
||||||
|
src/event/ngx_event_timer.c \
|
||||||
|
src/event/ngx_event_posted.c \
|
||||||
|
src/event/ngx_event_accept.c \
|
||||||
|
src/event/ngx_event_udp.c \
|
||||||
|
src/event/ngx_event_connect.c \
|
||||||
|
src/event/ngx_event_pipe.c"
|
||||||
|
|
||||||
|
|
||||||
|
SELECT_MODULE=ngx_select_module
|
||||||
|
SELECT_SRCS=src/event/modules/ngx_select_module.c
|
||||||
|
WIN32_SELECT_SRCS=src/event/modules/ngx_win32_select_module.c
|
||||||
|
|
||||||
|
POLL_MODULE=ngx_poll_module
|
||||||
|
POLL_SRCS=src/event/modules/ngx_poll_module.c
|
||||||
|
WIN32_POLL_SRCS=src/event/modules/ngx_win32_poll_module.c
|
||||||
|
|
||||||
|
KQUEUE_MODULE=ngx_kqueue_module
|
||||||
|
KQUEUE_SRCS=src/event/modules/ngx_kqueue_module.c
|
||||||
|
|
||||||
|
DEVPOLL_MODULE=ngx_devpoll_module
|
||||||
|
DEVPOLL_SRCS=src/event/modules/ngx_devpoll_module.c
|
||||||
|
|
||||||
|
EVENTPORT_MODULE=ngx_eventport_module
|
||||||
|
EVENTPORT_SRCS=src/event/modules/ngx_eventport_module.c
|
||||||
|
|
||||||
|
EPOLL_MODULE=ngx_epoll_module
|
||||||
|
EPOLL_SRCS=src/event/modules/ngx_epoll_module.c
|
||||||
|
|
||||||
|
IOCP_MODULE=ngx_iocp_module
|
||||||
|
IOCP_SRCS=src/event/modules/ngx_iocp_module.c
|
||||||
|
|
||||||
|
FILE_AIO_SRCS="src/os/unix/ngx_file_aio_read.c"
|
||||||
|
LINUX_AIO_SRCS="src/os/unix/ngx_linux_aio_read.c"
|
||||||
|
|
||||||
|
UNIX_INCS="$CORE_INCS $EVENT_INCS src/os/unix"
|
||||||
|
|
||||||
|
UNIX_DEPS="$CORE_DEPS $EVENT_DEPS \
|
||||||
|
src/os/unix/ngx_time.h \
|
||||||
|
src/os/unix/ngx_errno.h \
|
||||||
|
src/os/unix/ngx_alloc.h \
|
||||||
|
src/os/unix/ngx_files.h \
|
||||||
|
src/os/unix/ngx_channel.h \
|
||||||
|
src/os/unix/ngx_shmem.h \
|
||||||
|
src/os/unix/ngx_process.h \
|
||||||
|
src/os/unix/ngx_setaffinity.h \
|
||||||
|
src/os/unix/ngx_setproctitle.h \
|
||||||
|
src/os/unix/ngx_atomic.h \
|
||||||
|
src/os/unix/ngx_gcc_atomic_x86.h \
|
||||||
|
src/os/unix/ngx_thread.h \
|
||||||
|
src/os/unix/ngx_socket.h \
|
||||||
|
src/os/unix/ngx_os.h \
|
||||||
|
src/os/unix/ngx_user.h \
|
||||||
|
src/os/unix/ngx_dlopen.h \
|
||||||
|
src/os/unix/ngx_process_cycle.h"
|
||||||
|
|
||||||
|
# add to UNIX_DEPS
|
||||||
|
# src/os/unix/ngx_gcc_atomic_amd64.h \
|
||||||
|
# src/os/unix/ngx_gcc_atomic_sparc64.h \
|
||||||
|
# src/os/unix/ngx_gcc_atomic_ppc.h \
|
||||||
|
# src/os/unix/ngx_sunpro_atomic_sparc64.h \
|
||||||
|
# src/os/unix/ngx_sunpro_x86.il \
|
||||||
|
# src/os/unix/ngx_sunpro_amd64.il \
|
||||||
|
# src/os/unix/ngx_sunpro_sparc64.il \
|
||||||
|
|
||||||
|
|
||||||
|
UNIX_SRCS="$CORE_SRCS $EVENT_SRCS \
|
||||||
|
src/os/unix/ngx_time.c \
|
||||||
|
src/os/unix/ngx_errno.c \
|
||||||
|
src/os/unix/ngx_alloc.c \
|
||||||
|
src/os/unix/ngx_files.c \
|
||||||
|
src/os/unix/ngx_socket.c \
|
||||||
|
src/os/unix/ngx_recv.c \
|
||||||
|
src/os/unix/ngx_readv_chain.c \
|
||||||
|
src/os/unix/ngx_udp_recv.c \
|
||||||
|
src/os/unix/ngx_send.c \
|
||||||
|
src/os/unix/ngx_writev_chain.c \
|
||||||
|
src/os/unix/ngx_udp_send.c \
|
||||||
|
src/os/unix/ngx_udp_sendmsg_chain.c \
|
||||||
|
src/os/unix/ngx_channel.c \
|
||||||
|
src/os/unix/ngx_shmem.c \
|
||||||
|
src/os/unix/ngx_process.c \
|
||||||
|
src/os/unix/ngx_daemon.c \
|
||||||
|
src/os/unix/ngx_setaffinity.c \
|
||||||
|
src/os/unix/ngx_setproctitle.c \
|
||||||
|
src/os/unix/ngx_posix_init.c \
|
||||||
|
src/os/unix/ngx_user.c \
|
||||||
|
src/os/unix/ngx_dlopen.c \
|
||||||
|
src/os/unix/ngx_process_cycle.c"
|
||||||
|
|
||||||
|
POSIX_DEPS=src/os/unix/ngx_posix_config.h
|
||||||
|
|
||||||
|
THREAD_POOL_MODULE=ngx_thread_pool_module
|
||||||
|
THREAD_POOL_DEPS=src/core/ngx_thread_pool.h
|
||||||
|
THREAD_POOL_SRCS="src/core/ngx_thread_pool.c
|
||||||
|
src/os/unix/ngx_thread_cond.c
|
||||||
|
src/os/unix/ngx_thread_mutex.c
|
||||||
|
src/os/unix/ngx_thread_id.c"
|
||||||
|
|
||||||
|
FREEBSD_DEPS="src/os/unix/ngx_freebsd_config.h src/os/unix/ngx_freebsd.h"
|
||||||
|
FREEBSD_SRCS=src/os/unix/ngx_freebsd_init.c
|
||||||
|
FREEBSD_SENDFILE_SRCS=src/os/unix/ngx_freebsd_sendfile_chain.c
|
||||||
|
|
||||||
|
LINUX_DEPS="src/os/unix/ngx_linux_config.h src/os/unix/ngx_linux.h"
|
||||||
|
LINUX_SRCS=src/os/unix/ngx_linux_init.c
|
||||||
|
LINUX_SENDFILE_SRCS=src/os/unix/ngx_linux_sendfile_chain.c
|
||||||
|
|
||||||
|
|
||||||
|
SOLARIS_DEPS="src/os/unix/ngx_solaris_config.h src/os/unix/ngx_solaris.h"
|
||||||
|
SOLARIS_SRCS=src/os/unix/ngx_solaris_init.c
|
||||||
|
SOLARIS_SENDFILEV_SRCS=src/os/unix/ngx_solaris_sendfilev_chain.c
|
||||||
|
|
||||||
|
|
||||||
|
DARWIN_DEPS="src/os/unix/ngx_darwin_config.h src/os/unix/ngx_darwin.h"
|
||||||
|
DARWIN_SRCS=src/os/unix/ngx_darwin_init.c
|
||||||
|
DARWIN_SENDFILE_SRCS=src/os/unix/ngx_darwin_sendfile_chain.c
|
||||||
|
|
||||||
|
|
||||||
|
WIN32_INCS="$CORE_INCS $EVENT_INCS src/os/win32"
|
||||||
|
|
||||||
|
WIN32_DEPS="$CORE_DEPS $EVENT_DEPS \
|
||||||
|
src/os/win32/ngx_win32_config.h \
|
||||||
|
src/os/win32/ngx_time.h \
|
||||||
|
src/os/win32/ngx_errno.h \
|
||||||
|
src/os/win32/ngx_alloc.h \
|
||||||
|
src/os/win32/ngx_files.h \
|
||||||
|
src/os/win32/ngx_shmem.h \
|
||||||
|
src/os/win32/ngx_process.h \
|
||||||
|
src/os/win32/ngx_atomic.h \
|
||||||
|
src/os/win32/ngx_thread.h \
|
||||||
|
src/os/win32/ngx_socket.h \
|
||||||
|
src/os/win32/ngx_os.h \
|
||||||
|
src/os/win32/ngx_user.h \
|
||||||
|
src/os/win32/ngx_dlopen.h \
|
||||||
|
src/os/win32/ngx_process_cycle.h"
|
||||||
|
|
||||||
|
WIN32_CONFIG=src/os/win32/ngx_win32_config.h
|
||||||
|
|
||||||
|
WIN32_SRCS="$CORE_SRCS $EVENT_SRCS \
|
||||||
|
src/os/win32/ngx_errno.c \
|
||||||
|
src/os/win32/ngx_alloc.c \
|
||||||
|
src/os/win32/ngx_files.c \
|
||||||
|
src/os/win32/ngx_shmem.c \
|
||||||
|
src/os/win32/ngx_time.c \
|
||||||
|
src/os/win32/ngx_process.c \
|
||||||
|
src/os/win32/ngx_thread.c \
|
||||||
|
src/os/win32/ngx_socket.c \
|
||||||
|
src/os/win32/ngx_wsarecv.c \
|
||||||
|
src/os/win32/ngx_wsarecv_chain.c \
|
||||||
|
src/os/win32/ngx_udp_wsarecv.c \
|
||||||
|
src/os/win32/ngx_wsasend.c \
|
||||||
|
src/os/win32/ngx_wsasend_chain.c \
|
||||||
|
src/os/win32/ngx_win32_init.c \
|
||||||
|
src/os/win32/ngx_user.c \
|
||||||
|
src/os/win32/ngx_dlopen.c \
|
||||||
|
src/os/win32/ngx_event_log.c \
|
||||||
|
src/os/win32/ngx_process_cycle.c \
|
||||||
|
src/event/ngx_event_acceptex.c"
|
||||||
|
|
||||||
|
NGX_WIN32_ICONS="src/os/win32/nginx.ico"
|
||||||
|
NGX_WIN32_RC="src/os/win32/nginx.rc"
|
||||||
|
|
||||||
|
|
||||||
|
HTTP_FILE_CACHE_SRCS=src/http/ngx_http_file_cache.c
|
@ -0,0 +1,8 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
have=NGX_SUPPRESS_WARN . auto/have
|
||||||
|
|
||||||
|
have=NGX_SMP . auto/have
|
@ -0,0 +1,82 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "Configuration summary"
|
||||||
|
|
||||||
|
|
||||||
|
if [ $USE_THREADS = YES ]; then
|
||||||
|
echo " + using threads"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $USE_PCRE = DISABLED ]; then
|
||||||
|
echo " + PCRE library is disabled"
|
||||||
|
|
||||||
|
else
|
||||||
|
case $PCRE in
|
||||||
|
YES) echo " + using system PCRE library" ;;
|
||||||
|
NONE) echo " + PCRE library is not used" ;;
|
||||||
|
*) echo " + using PCRE library: $PCRE" ;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
case $OPENSSL in
|
||||||
|
YES) echo " + using system OpenSSL library" ;;
|
||||||
|
NONE) echo " + OpenSSL library is not used" ;;
|
||||||
|
*) echo " + using OpenSSL library: $OPENSSL" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
case $ZLIB in
|
||||||
|
YES) echo " + using system zlib library" ;;
|
||||||
|
NONE) echo " + zlib library is not used" ;;
|
||||||
|
*) echo " + using zlib library: $ZLIB" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
case $NGX_LIBATOMIC in
|
||||||
|
YES) echo " + using system libatomic_ops library" ;;
|
||||||
|
NO) ;; # not used
|
||||||
|
*) echo " + using libatomic_ops library: $NGX_LIBATOMIC" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
echo
|
||||||
|
|
||||||
|
|
||||||
|
cat << END
|
||||||
|
nginx path prefix: "$NGX_PREFIX"
|
||||||
|
nginx binary file: "$NGX_SBIN_PATH"
|
||||||
|
nginx modules path: "$NGX_MODULES_PATH"
|
||||||
|
nginx configuration prefix: "$NGX_CONF_PREFIX"
|
||||||
|
nginx configuration file: "$NGX_CONF_PATH"
|
||||||
|
nginx pid file: "$NGX_PID_PATH"
|
||||||
|
END
|
||||||
|
|
||||||
|
if test -n "$NGX_ERROR_LOG_PATH"; then
|
||||||
|
echo " nginx error log file: \"$NGX_ERROR_LOG_PATH\""
|
||||||
|
else
|
||||||
|
echo " nginx logs errors to stderr"
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat << END
|
||||||
|
nginx http access log file: "$NGX_HTTP_LOG_PATH"
|
||||||
|
nginx http client request body temporary files: "$NGX_HTTP_CLIENT_TEMP_PATH"
|
||||||
|
END
|
||||||
|
|
||||||
|
if [ $HTTP_PROXY = YES ]; then
|
||||||
|
echo " nginx http proxy temporary files: \"$NGX_HTTP_PROXY_TEMP_PATH\""
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $HTTP_FASTCGI = YES ]; then
|
||||||
|
echo " nginx http fastcgi temporary files: \"$NGX_HTTP_FASTCGI_TEMP_PATH\""
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $HTTP_UWSGI = YES ]; then
|
||||||
|
echo " nginx http uwsgi temporary files: \"$NGX_HTTP_UWSGI_TEMP_PATH\""
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $HTTP_SCGI = YES ]; then
|
||||||
|
echo " nginx http scgi temporary files: \"$NGX_HTTP_SCGI_TEMP_PATH\""
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$NGX_POST_CONF_MSG"
|
@ -0,0 +1,21 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
if [ $USE_THREADS = YES ]; then
|
||||||
|
|
||||||
|
if [ "$NGX_PLATFORM" = win32 ]; then
|
||||||
|
cat << END
|
||||||
|
|
||||||
|
$0: --with-threads is not supported on Windows
|
||||||
|
|
||||||
|
END
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
have=NGX_THREADS . auto/have
|
||||||
|
CORE_DEPS="$CORE_DEPS $THREAD_POOL_DEPS"
|
||||||
|
CORE_SRCS="$CORE_SRCS $THREAD_POOL_SRCS"
|
||||||
|
CORE_LIBS="$CORE_LIBS -lpthread"
|
||||||
|
NGX_LIBPTHREAD="-lpthread"
|
||||||
|
fi
|
@ -0,0 +1,76 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
echo $ngx_n "checking for $ngx_type size ...$ngx_c"
|
||||||
|
|
||||||
|
cat << END >> $NGX_AUTOCONF_ERR
|
||||||
|
|
||||||
|
----------------------------------------
|
||||||
|
checking for $ngx_type size
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
ngx_size=
|
||||||
|
|
||||||
|
cat << END > $NGX_AUTOTEST.c
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/time.h>
|
||||||
|
$NGX_INCLUDE_UNISTD_H
|
||||||
|
#include <signal.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <sys/resource.h>
|
||||||
|
$NGX_INCLUDE_INTTYPES_H
|
||||||
|
$NGX_INCLUDE_AUTO_CONFIG_H
|
||||||
|
|
||||||
|
int main(void) {
|
||||||
|
printf("%d", (int) sizeof($ngx_type));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
|
ngx_test="$CC $CC_TEST_FLAGS $CC_AUX_FLAGS \
|
||||||
|
-o $NGX_AUTOTEST $NGX_AUTOTEST.c $NGX_LD_OPT $ngx_feature_libs"
|
||||||
|
|
||||||
|
eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&1"
|
||||||
|
|
||||||
|
|
||||||
|
if [ -x $NGX_AUTOTEST ]; then
|
||||||
|
ngx_size=`$NGX_AUTOTEST`
|
||||||
|
echo " $ngx_size bytes"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
case $ngx_size in
|
||||||
|
4)
|
||||||
|
ngx_max_value=2147483647
|
||||||
|
ngx_max_len='(sizeof("-2147483648") - 1)'
|
||||||
|
;;
|
||||||
|
|
||||||
|
8)
|
||||||
|
ngx_max_value=9223372036854775807LL
|
||||||
|
ngx_max_len='(sizeof("-9223372036854775808") - 1)'
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo
|
||||||
|
echo "$0: error: can not detect $ngx_type size"
|
||||||
|
|
||||||
|
echo "----------" >> $NGX_AUTOCONF_ERR
|
||||||
|
cat $NGX_AUTOTEST.c >> $NGX_AUTOCONF_ERR
|
||||||
|
echo "----------" >> $NGX_AUTOCONF_ERR
|
||||||
|
echo $ngx_test >> $NGX_AUTOCONF_ERR
|
||||||
|
echo "----------" >> $NGX_AUTOCONF_ERR
|
||||||
|
|
||||||
|
rm -rf $NGX_AUTOTEST*
|
||||||
|
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
rm -rf $NGX_AUTOTEST*
|
||||||
|
|
@ -0,0 +1,82 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
echo $ngx_n "checking for $ngx_type ...$ngx_c"
|
||||||
|
|
||||||
|
cat << END >> $NGX_AUTOCONF_ERR
|
||||||
|
|
||||||
|
----------------------------------------
|
||||||
|
checking for $ngx_type
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
ngx_found=no
|
||||||
|
|
||||||
|
for ngx_try in $ngx_type $ngx_types
|
||||||
|
do
|
||||||
|
|
||||||
|
cat << END > $NGX_AUTOTEST.c
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <signal.h>
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#include <sys/time.h>
|
||||||
|
#include <sys/resource.h>
|
||||||
|
#include <netinet/in.h>
|
||||||
|
$NGX_INCLUDE_INTTYPES_H
|
||||||
|
|
||||||
|
int main(void) {
|
||||||
|
$ngx_try i = 0;
|
||||||
|
return (int) i;
|
||||||
|
}
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
ngx_test="$CC $CC_TEST_FLAGS $CC_AUX_FLAGS \
|
||||||
|
-o $NGX_AUTOTEST $NGX_AUTOTEST.c $NGX_LD_OPT $ngx_feature_libs"
|
||||||
|
|
||||||
|
eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&1"
|
||||||
|
|
||||||
|
if [ -x $NGX_AUTOTEST ]; then
|
||||||
|
if [ $ngx_try = $ngx_type ]; then
|
||||||
|
echo " found"
|
||||||
|
ngx_found=yes
|
||||||
|
else
|
||||||
|
echo ", $ngx_try used"
|
||||||
|
ngx_found=$ngx_try
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
if [ $ngx_try = $ngx_type ]; then
|
||||||
|
echo $ngx_n " $ngx_try not found$ngx_c"
|
||||||
|
else
|
||||||
|
echo $ngx_n ", $ngx_try not found$ngx_c"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "----------" >> $NGX_AUTOCONF_ERR
|
||||||
|
cat $NGX_AUTOTEST.c >> $NGX_AUTOCONF_ERR
|
||||||
|
echo "----------" >> $NGX_AUTOCONF_ERR
|
||||||
|
echo $ngx_test >> $NGX_AUTOCONF_ERR
|
||||||
|
echo "----------" >> $NGX_AUTOCONF_ERR
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -rf $NGX_AUTOTEST*
|
||||||
|
|
||||||
|
if [ $ngx_found != no ]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ $ngx_found = no ]; then
|
||||||
|
echo
|
||||||
|
echo "$0: error: can not define $ngx_type"
|
||||||
|
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $ngx_found != yes ]; then
|
||||||
|
echo "typedef $ngx_found $ngx_type;" >> $NGX_AUTO_CONFIG_H
|
||||||
|
fi
|
@ -0,0 +1,50 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
echo $ngx_n "checking for uintptr_t ...$ngx_c"
|
||||||
|
|
||||||
|
cat << END >> $NGX_AUTOCONF_ERR
|
||||||
|
|
||||||
|
----------------------------------------
|
||||||
|
checking for uintptr_t
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
found=no
|
||||||
|
|
||||||
|
cat << END > $NGX_AUTOTEST.c
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
$NGX_INCLUDE_INTTYPES_H
|
||||||
|
|
||||||
|
int main(void) {
|
||||||
|
uintptr_t i = 0;
|
||||||
|
return (int) i;
|
||||||
|
}
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
ngx_test="$CC $CC_TEST_FLAGS $CC_AUX_FLAGS \
|
||||||
|
-o $NGX_AUTOTEST $NGX_AUTOTEST.c $NGX_LD_OPT"
|
||||||
|
|
||||||
|
eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&1"
|
||||||
|
|
||||||
|
if [ -x $NGX_AUTOTEST ]; then
|
||||||
|
echo " uintptr_t found"
|
||||||
|
found=yes
|
||||||
|
else
|
||||||
|
echo $ngx_n " uintptr_t not found" $ngx_c
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -rf $NGX_AUTOTEST*
|
||||||
|
|
||||||
|
|
||||||
|
if [ $found = no ]; then
|
||||||
|
found="uint`expr 8 \* $ngx_ptr_size`_t"
|
||||||
|
echo ", $found used"
|
||||||
|
|
||||||
|
echo "typedef $found uintptr_t;" >> $NGX_AUTO_CONFIG_H
|
||||||
|
echo "typedef $found intptr_t;" | sed -e 's/u//g' >> $NGX_AUTO_CONFIG_H
|
||||||
|
fi
|
@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
# Copyright (C) Igor Sysoev
|
||||||
|
# Copyright (C) Nginx, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
cat << END >> $NGX_AUTO_CONFIG_H
|
||||||
|
|
||||||
|
#ifndef $ngx_param
|
||||||
|
#define $ngx_param $ngx_value
|
||||||
|
#endif
|
||||||
|
|
||||||
|
END
|