From 7b3f2d4420a0df7faf374b1b5c306df1d9d0e312 Mon Sep 17 00:00:00 2001 From: Ken Martin Date: Tue, 3 Jun 2003 10:34:15 -0400 Subject: [PATCH] new test --- Tests/CustomCommand/CMakeLists.txt | 105 +++++++++++++++++++++++++++++ Tests/CustomCommand/doc1.tex | 1 + Tests/CustomCommand/foo.in | 15 +++++ Tests/CustomCommand/generator.c | 9 +++ Tests/CustomCommand/wrapped.h | 1 + Tests/CustomCommand/wrapper.c | 9 +++ 6 files changed, 140 insertions(+) create mode 100644 Tests/CustomCommand/CMakeLists.txt create mode 100644 Tests/CustomCommand/doc1.tex create mode 100644 Tests/CustomCommand/foo.in create mode 100644 Tests/CustomCommand/generator.c create mode 100644 Tests/CustomCommand/wrapped.h create mode 100644 Tests/CustomCommand/wrapper.c diff --git a/Tests/CustomCommand/CMakeLists.txt b/Tests/CustomCommand/CMakeLists.txt new file mode 100644 index 0000000000..19a8399034 --- /dev/null +++ b/Tests/CustomCommand/CMakeLists.txt @@ -0,0 +1,105 @@ +# +# Wrapping +# +PROJECT (CustomCommand) + +# +# Lib and exe path +# +SET (LIBRARY_OUTPUT_PATH + ${PROJECT_BINARY_DIR}/bin/ CACHE PATH + "Single output directory for building all libraries.") + +SET (EXECUTABLE_OUTPUT_PATH + ${PROJECT_BINARY_DIR}/bin/ CACHE PATH + "Single output directory for building all executables.") + +################################################################ +# +# First test using a compiled generator to create a .c file +# +################################################################ +# add the executable that will generate the file +ADD_EXECUTABLE(generator generator.c) + +# the folowing assumes that a cmSourceFile +# is instantiated for the output, with GENERATED 1 +# at the end of the day this becomes a what in VS ? +ADD_CUSTOM_COMMAND(OUTPUT ${PROJECT_BINARY_DIR}/generated.c + DEPENDS generator + COMMAND ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/generator + ARGS ${PROJECT_BINARY_DIR}/generated.c + ) + +################################################################ +# +# Test using a wrapper to wrap a header file +# +################################################################ +# add the executable that will generate the file +ADD_EXECUTABLE(wrapper wrapper.c) + +# the following assumes that a cmSourceFile +# is instantiated for the output, with GENERATED 1 +# at the end of the day this becomes a what in VS ? +ADD_CUSTOM_COMMAND( + OUTPUT ${PROJECT_BINARY_DIR}/wrapped.c + DEPENDS wrapper + MAIN_DEPENDENCY ${PROJECT_SOURCE_DIR}/wrapped.h + COMMAND ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/wrapper + ARGS ${PROJECT_BINARY_DIR}/wrapped.c ${PROJECT_SOURCE_DIR}/wrapped.h + ) + +################################################################ +# +# Test creating files from a custom target +# +################################################################ +ADD_CUSTOM_COMMAND(OUTPUT ${PROJECT_BINARY_DIR}/doc1.dvi + DEPENDS ${PROJECT_SOURCE_DIR}/doc1.tex + COMMAND ${CMAKE_COMMAND} + ARGS -E copy ${PROJECT_SOURCE_DIR}/doc1.tex + ${PROJECT_BINARY_DIR}/doc1.dvi + ) + +ADD_CUSTOM_COMMAND(OUTPUT ${PROJECT_BINARY_DIR}/doc1.h + DEPENDS ${PROJECT_BINARY_DIR}/doc1.dvi + COMMAND ${CMAKE_COMMAND} + ARGS -E copy ${PROJECT_BINARY_DIR}/doc1.dvi + ${PROJECT_BINARY_DIR}/doc1.h + ) + +ADD_CUSTOM_TARGET(TDocument ALL + ${CMAKE_COMMAND} -E echo "building doc1.h" + DEPENDS ${PROJECT_BINARY_DIR}/doc1.h + ) + +################################################################ +# +# Test using a multistep generated file +# +################################################################ +ADD_CUSTOM_COMMAND(OUTPUT ${PROJECT_BINARY_DIR}/foo.pre + DEPENDS ${PROJECT_SOURCE_DIR}/foo.in + COMMAND ${CMAKE_COMMAND} + ARGS -E copy ${PROJECT_SOURCE_DIR}/foo.in + ${PROJECT_BINARY_DIR}/foo.pre + ) + +ADD_CUSTOM_COMMAND(OUTPUT ${PROJECT_BINARY_DIR}/foo.c + DEPENDS TDocument ${PROJECT_BINARY_DIR}/foo.pre + COMMAND ${CMAKE_COMMAND} + ARGS -E copy ${PROJECT_BINARY_DIR}/foo.pre + ${PROJECT_BINARY_DIR}/foo.c + ) + +# add the library +ADD_EXECUTABLE(CustomCommand + ${PROJECT_BINARY_DIR}/foo.c + ${PROJECT_BINARY_DIR}/wrapped.c + ${PROJECT_BINARY_DIR}/generated.c + ) + +# must add a dependency on TDocument otherwise it might never build and +# the CustomCommand executable really needs doc1.h +ADD_DEPENDENCIES(CustomCommand TDocument) \ No newline at end of file diff --git a/Tests/CustomCommand/doc1.tex b/Tests/CustomCommand/doc1.tex new file mode 100644 index 0000000000..e6b6ccbe51 --- /dev/null +++ b/Tests/CustomCommand/doc1.tex @@ -0,0 +1 @@ +int doc() { return 7;} diff --git a/Tests/CustomCommand/foo.in b/Tests/CustomCommand/foo.in new file mode 100644 index 0000000000..a887264f6c --- /dev/null +++ b/Tests/CustomCommand/foo.in @@ -0,0 +1,15 @@ +#include "doc1.h" + +int generated(); +int wrapped(); + +int main () +{ + if (generated()*wrapped()*doc() == 3*5*7) + { + return 0; + } + + return -1; +} + diff --git a/Tests/CustomCommand/generator.c b/Tests/CustomCommand/generator.c new file mode 100644 index 0000000000..cda3e0f680 --- /dev/null +++ b/Tests/CustomCommand/generator.c @@ -0,0 +1,9 @@ +#include + +main(int argc, char *argv[]) +{ + FILE *fp = fopen(argv[1],"w"); + + fprintf(fp,"int generated() { return 3; }\n"); + fclose(fp); +} diff --git a/Tests/CustomCommand/wrapped.h b/Tests/CustomCommand/wrapped.h new file mode 100644 index 0000000000..fa882cb5b0 --- /dev/null +++ b/Tests/CustomCommand/wrapped.h @@ -0,0 +1 @@ +/* empty file */ diff --git a/Tests/CustomCommand/wrapper.c b/Tests/CustomCommand/wrapper.c new file mode 100644 index 0000000000..0ed4b76e5a --- /dev/null +++ b/Tests/CustomCommand/wrapper.c @@ -0,0 +1,9 @@ +#include + +main(int argc, char *argv[]) +{ + FILE *fp = fopen(argv[1],"w"); + + fprintf(fp,"int wrapped() { return 5; }\n"); + fclose(fp); +}