blob: 81eaaf3386df164132ffe2d71378a51c7bceb5e0 [file] [log] [blame]
Shinichiro Hamajib69bf8a2015-06-10 14:52:06 +09001# Copyright 2015 Google Inc. All rights reserved
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
Shinichiro Hamaji776ca302015-06-06 03:52:48 +090015GO_SRCS:=$(wildcard *.go)
16CXX_SRCS:= \
17 ast.cc \
Shinichiro Hamaji5f86e1a2015-06-29 14:25:39 +090018 command.cc \
Shinichiro Hamaji776ca302015-06-06 03:52:48 +090019 dep.cc \
20 eval.cc \
21 exec.cc \
22 file.cc \
23 file_cache.cc \
24 fileutil.cc \
Shinichiro Hamaji5f57a992015-06-30 19:39:39 +090025 find.cc \
Shinichiro Hamaji08808d32015-06-26 08:02:45 +090026 flags.cc \
Shinichiro Hamaji776ca302015-06-06 03:52:48 +090027 func.cc \
28 main.cc \
Shinichiro Hamaji5f86e1a2015-06-29 14:25:39 +090029 ninja.cc \
Shinichiro Hamaji776ca302015-06-06 03:52:48 +090030 parser.cc \
31 rule.cc \
Shinichiro Hamaji0d8e79b2015-06-30 03:29:35 +090032 stats.cc \
Shinichiro Hamaji776ca302015-06-06 03:52:48 +090033 string_piece.cc \
34 string_pool.cc \
35 stringprintf.cc \
36 strutil.cc \
Shinichiro Hamajie7992752015-06-29 18:38:35 +090037 symtab.cc \
Shinichiro Hamaji54e52dd2015-06-27 17:14:06 +090038 time.cc \
Shinichiro Hamaji776ca302015-06-06 03:52:48 +090039 value.cc \
40 var.cc
41CXX_TEST_SRCS:= \
42 $(wildcard *_test.cc)
43CXX_OBJS:=$(CXX_SRCS:.cc=.o)
44CXX_TEST_OBJS:=$(CXX_TEST_SRCS:.cc=.o)
45CXX_ALL_OBJS:=$(CXX_SRCS:.cc=.o) $(CXX_TEST_SRCS:.cc=.o)
46CXX_TEST_EXES:=$(CXX_TEST_OBJS:.o=)
Shinichiro Hamaji6f04aed2015-06-27 05:48:27 +090047CXXFLAGS:=-g -W -Wall -MMD
48CXXFLAGS+=-O -DNOLOG
Shinichiro Hamaji65489db2015-06-29 20:44:26 +090049#CXXFLAGS+=-pg
Fumitoshi Ukai119dc912015-03-30 16:52:41 +090050
Shinichiro Hamaji776ca302015-06-06 03:52:48 +090051all: kati para ckati $(CXX_TEST_EXES)
Fumitoshi Ukai119dc912015-03-30 16:52:41 +090052
Fumitoshi Ukai744bb2b2015-06-25 00:10:52 +090053kati: go_src_stamp
54 GOPATH=$$(pwd)/out go install github.com/google/kati/cmd/kati
55 cp out/bin/kati $@
56
57go_src_stamp: $(GO_SRCS) cmd/*/*.go
58 -rm -rf out/src/github.com/google/kati
59 mkdir -p out/src/github.com/google/kati
60 cp -a $(GO_SRCS) cmd out/src/github.com/google/kati
61 touch $@
62
63go_test: $(GO_SRCS) para
64 go test *.go
Fumitoshi Ukai119dc912015-03-30 16:52:41 +090065
Shinichiro Hamaji776ca302015-06-06 03:52:48 +090066ckati: $(CXX_OBJS)
67 $(CXX) -std=c++11 $(CXXFLAGS) -o $@ $(CXX_OBJS)
68
69$(CXX_ALL_OBJS): %.o: %.cc
70 $(CXX) -c -std=c++11 $(CXXFLAGS) -o $@ $<
71
72$(CXX_TEST_EXES): $(filter-out main.o,$(CXX_OBJS))
73$(CXX_TEST_EXES): %: %.o
74 $(CXX) $^ -o $@
75
Shinichiro Hamaji5ca0ecd2015-04-30 18:30:56 +090076para: para.cc
Shinichiro Hamajicedc5c82015-05-13 17:03:20 +090077 $(CXX) -std=c++11 -g -O -W -Wall -MMD -o $@ $<
Fumitoshi Ukaie520f262015-03-31 17:27:03 +090078
Shinichiro Hamaji776ca302015-06-06 03:52:48 +090079test: all go_test
Fumitoshi Ukai119dc912015-03-30 16:52:41 +090080 ruby runtest.rb
81
Shinichiro Hamajibbf6a712015-03-30 17:22:38 +090082clean:
Shinichiro Hamaji480bca52015-06-26 17:04:21 +090083 rm -rf out kati ckati *.o *.d go_src_stamp
Shinichiro Hamajibbf6a712015-03-30 17:22:38 +090084
Fumitoshi Ukai119dc912015-03-30 16:52:41 +090085.PHONY: test
Shinichiro Hamaji5ca0ecd2015-04-30 18:30:56 +090086
87-include *.d