jbsrc/lib/src/extras/jb-sasl2.c (2374B) - raw
1 /* 2 * JB, the Jean-Yves Lefort's Build System 3 * Copyright (C) 2008 Jean-Yves Lefort <jylefort@brutele.be> 4 * 5 * This program is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation; either version 3 of the License, or 8 * (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License along 16 * with this program; if not, write to the Free Software Foundation, Inc., 17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 */ 19 20 #include <stdio.h> 21 #include "jb-tests.h" 22 #include "jb-variable.h" 23 #include "jb-util.h" 24 25 #define JB_SASL2_CFLAGS NULL 26 #define JB_SASL2_CPPFLAGS NULL 27 #define JB_SASL2_LDFLAGS NULL 28 #define JB_SASL2_LIBS "-lsasl2" 29 30 gboolean 31 jb_sasl2_check (const char *minversion) 32 { 33 gboolean result; 34 char *cppflags; 35 int major; 36 int minor; 37 int step = 0; 38 int patch = 0; 39 40 if (! minversion) 41 minversion = "2.0"; 42 43 jb_message_checking("for Cyrus SASL >= %s", minversion); 44 45 if (sscanf(minversion, "%d.%d.%d.%d", &major, &minor, &step, &patch) < 2) 46 g_error("invalid version string `%s'", minversion); 47 48 cppflags = g_strdup_printf("-DJB_SASL2_MAJOR=%i -DJB_SASL2_MINOR=%i -DJB_SASL2_STEP=%i -DJB_SASL2_PATCH=%i", 49 major, minor, step, patch); 50 51 result = jb_test_run_string("#include <sasl/sasl.h>\n" 52 "int main () {\n" 53 " int major, minor, step, patch;\n" 54 " sasl_version_info(0, 0, &major, &minor, &step, &patch);\n" 55 " if ((major << 24) + (minor << 16) + (step << 8) + patch\n" 56 " < (JB_SASL2_MAJOR << 24) + (JB_SASL2_MINOR << 16) + (JB_SASL2_STEP << 8) + JB_SASL2_PATCH)\n" 57 " exit(2); /* version too old */\n" 58 " exit(0);\n" 59 "}\n", 60 JB_SASL2_CFLAGS, 61 cppflags, 62 JB_SASL2_LDFLAGS, 63 JB_SASL2_LIBS); 64 65 g_free(cppflags); 66 67 jb_message_result_bool(result); 68 69 if (result) 70 jb_variable_set_package_flags("sasl2", 71 JB_SASL2_CFLAGS, 72 JB_SASL2_CPPFLAGS, 73 JB_SASL2_LDFLAGS, 74 JB_SASL2_LIBS); 75 76 return result; 77 }