defensive-coding-guide/src/src.mk

84 lines
2.7 KiB
Makefile
Raw Normal View History

2013-03-11 18:11:16 -04:00
.PHONY: build-sources
CC = gcc
CXX = g++
2014-05-26 14:58:01 +02:00
GCCGO = gccgo
2013-03-11 18:11:16 -04:00
CWARNFLAGS = -Wall -W -Wno-unused-parameter -Werror=implicit-function-declaration
CXXWARNFLAGS = -Wall -W
2013-03-11 18:11:16 -04:00
CFLAGS = -std=gnu99 -O2 $(CWARNFLAGS) -g
CXXFLAGS = -std=c++03 -O2 $(CXXWARNFLAGS) -g
2014-05-26 14:58:01 +02:00
GOFLAGS = -O2 -Wall -W
LDFLAGS = -g
2013-03-11 18:11:16 -04:00
# List files which should only be compiled for syntax checking.
compile_only += C-Pointers-remaining
compile_only += C-Arithmetic-add
compile_only += C-Arithmetic-mult
2013-08-26 16:15:53 +02:00
compile_only += C-Globals
2013-03-11 18:11:16 -04:00
2013-07-02 17:43:24 +02:00
compile_only += Java-JNI-Pointers
CFLAGS_Java-JNI-Pointers = \
-I/usr/lib/jvm/java/include -I/usr/lib/jvm/java/include/linux
2013-03-11 18:11:16 -04:00
# List Java files which sould be compiled
2013-07-02 17:43:24 +02:00
compile_java += JavaFinally
2013-07-05 11:07:13 +02:00
compile_java += JavaReadArray
compile_java += JavaSecurityManagerUnprivileged
compile_java += JavaSecurityManagerPrivileged
2013-07-02 17:43:24 +02:00
2013-03-11 18:11:16 -04:00
compile_java += TLSClientOpenJDK
2013-07-02 17:43:24 +02:00
JCFLAGS_TLSClientOpenJDK = -source 1.6 -target 1.6
2013-03-11 18:11:16 -04:00
# List fiels which will be compiled and linked, together with
# additional dependencies.
compile_and_link += C-String-Functions
compile_and_link += TLS-Client-OpenSSL HSM-OpenSSL
2013-03-11 18:11:16 -04:00
LIBS_TLS-Client-OpenSSL = -lssl -lcrypto
LIBS_HSM-OpenSSL = -lssl -lcrypto
compile_and_link += TLS-Client-GNUTLS HSM-GNUTLS
2013-03-11 18:11:16 -04:00
LIBS_TLS-Client-GNUTLS = -lgnutls
LIBS_HSM-GNUTLS = -lgnutls
compile_and_link += TLS-Client-NSS HSM-NSS
2013-03-11 18:11:16 -04:00
CFLAGS_TLS-Client-NSS = -I/usr/include/nspr4 -I/usr/include/nss3
LIBS_TLS-Client-NSS = -lnss3 -lnspr4 -lssl3
CFLAGS_HSM-NSS = -I/usr/include/nss3 -I/usr/include/nspr4
LIBS_HSM-NSS = -lnss3 -lnspr4 -lssl3 -lnssutil3
2013-03-11 18:11:16 -04:00
compile_and_link += XML-Parser-Expat
LIBS_XML-Parser-Expat = -lexpat
compile_and_link += XML-Parser-Qt
LIBS_XML-Parser-Qt = -lQtCore -lQtXml
2014-05-26 14:58:01 +02:00
compile_and_link += Go-Error_Handling
2013-03-11 18:11:16 -04:00
# Define preprocessor symbols if certain functions exist.
CHECK_FUNCTION = crypto/X509_check_host/-DHAVE_X509_CHECK_HOST \
gnutls/gnutls_hash_fast/-DHAVE_GNUTLS_HASH_FAST
DEFINES := $(shell python src/check-function.py $(CHECK_FUNCTION))
CLASS_compile_java := $(patsubst %,src/%.class,$(compile_java))
BIN_compile_and_link := $(patsubst %,src/%,$(compile_and_link))
build-src: $(patsubst %,src/%.o,$(compile_only)) $(CLASS_compile_java) \
$(BIN_compile_and_link)
clean-src:
-rm src/*.o src/*.class $(BIN_compile_and_link)
src/%.o: src/%.c
$(CC) $(CFLAGS) $(DEFINES) $(CFLAGS_$(basename $(notdir $@))) -c $< -o $@
src/%.o: src/%.cpp
$(CXX) $(CXXFLAGS) $(DEFINES) $(CFLAGS_$(basename $(notdir $@))) -c $< -o $@
2013-03-11 18:11:16 -04:00
src/%.class: src/%.java
2013-07-02 17:43:24 +02:00
javac $(JCFLAGS_$(basename $(notdir $@))) -Xlint:all $^
2013-03-11 18:11:16 -04:00
src/%: src/%.o
$(CXX) $(LDFLAGS) $^ -o $@ $(LIBS_$(notdir $@))
2013-03-11 18:11:16 -04:00
2014-05-26 14:58:01 +02:00
src/%: src/%.go
$(GCCGO) $(GOFLAGS) $(LDFLAGS) -o $@ $^
2013-03-11 18:11:16 -04:00
src/TLS-Client-GNUTLS: src/tcp_connect.o
src/TLS-Client-OpenSSL: src/tcp_connect.o src/x509_check_host.o
src/TLS-Client-NSS: src/tcp_connect.o