diff --git a/CMakeLists.txt b/CMakeLists.txt index 4e17705..ca29ef1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -36,7 +36,7 @@ foreach(HEADER_SOURCE ${SOURCES_INCLUDE}) set(ALLINONE_SRC_C "allinone/${HEADER_NAME}-all-in-one.c") add_custom_command( OUTPUT ${ALLINONE_SRC_C} - COMMAND node allinone/build.js allinone/header.h ${HEADER_SOURCE} ${SOURCES_SRC_C} > ${ALLINONE_SRC_C} + COMMAND node allinone/build.js -Iinclude -Isrc ${HEADER_SOURCE} ${SOURCES_SRC_C} > ${ALLINONE_SRC_C} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} IMPLICIT_DEPENDS c ${SOURCES_INCLUDE} ${SOURCES_SRC} ) diff --git a/allinone/build.js b/allinone/build.js index 0d59d57..5ad7bed 100644 --- a/allinone/build.js +++ b/allinone/build.js @@ -3,13 +3,25 @@ var path = require('path'); var fs = require('fs'); +var files = []; +var include_dirs = []; + +for (var i = 2; i < process.argv.length; i++) { + var arg = process.argv[i]; + var match = /^-I(.*)$/.exec(arg); + if (match) + include_dirs.push(match[1]); + else + files.push(arg); +} + var included = {}; function load(filename) { if (/[\/\\]/.test(filename)) return fs.readFileSync(filename, 'utf8'); - var PATH = ['.', 'include', 'src']; + var PATH = ['.'].concat(include_dirs); for (;;) { var dir = PATH.shift(); try { @@ -91,8 +103,8 @@ source = source.concat('/*') .concat(' */') .concat(''); -for (var i = 2; i < process.argv.length; i++) { - var filename = process.argv[i]; +for (var i = 0; i < files.length; i++) { + var filename = files[i]; source = source.concat(include(null, filename)); }